2017-11-23 2 views
0

Ich habe ein Rollenmodell für Mitarbeiter erstellt, so dass Mitarbeiter zugewiesen werden, um die gesamte App basierend auf seiner Rolle zu steuern. Ich meine, wenn die Rolle des Angestellten can_create_only gegeben wird, dann sollte der Angestellte in der Lage sein, Inventar, Aufträge, Einzelteile usw. zu verursachen, und wenn Angestellter can_create_edit_and_delete gegeben wird, dann würde der Angestellte wie einer des Administrators und des etc. sein das Modell wie unten, aber ich möchte wissen, was der beste Weg ist, damit umzugehen und warum?benutzerdefinierte Rolle in Django für Mitarbeiter erstellen

Sollte ich mit Middleware oder Dekorateur gehen? Kann mir bitte jemand ein Beispiel geben?

class Role(models.Model): 
    name = models.CharField(max_length=100, blank=False, null=False) 

    class Meta: 
     verbose_name = 'Role' 
     verbose_name_plural = 'Roles' 


class Employee(models.Model): 
    office = models.ForeignKey(
     OfficeSetup, blank=False, null=False, on_delete=models.CASCADE) 
    name = models.CharField(max_length=150, blank=False, null=False) 
    designation = models.ForeignKey(Designation, blank=False, null=False) 
    section = models.ForeignKey(DepartmentSetup, blank=True, null=True) 
    phone_number = models.CharField(max_length=150, blank=True, null=True) 
    mobile_number = models.CharField(max_length=150, blank=True, null=True) 
    email = models.EmailField(max_length=150, blank=False, null=False) 
    gender = models.CharField(
     max_length=4, choices=GENDER, blank=True, null=True) 
    role = models.ForeignKey(Role, blank=True, null=True) 
    username = models.CharField(max_length=100, blank=False, null=False) 
    password = models.CharField(max_length=100, blank=False, null=False) 
    avatar = models.ImageField(
     null=True, blank=True, upload_to=upload_employee_image_path) 

    class Meta: 
     verbose_name = 'Employee' 
     verbose_name_plural = 'Employees' 

    def __str__(self): 
     return self.name 

Wenn ein Mitarbeiter von admin erstellen, der Benutzername, Passwort und E-Mail, stellt der Administrator wird zusammen mit dem Mitarbeiter

Antwort

1

Django kommt mit Gruppen und Berechtigungen eine neue Benutzerinstanz erstellen, die Sie all den meisten alles bieten sind auf der Suche nach. Dies kann Ihnen helfen - How do I use Django groups and permissions? Django Dokumentation - https://docs.djangoproject.com/en/1.11/topics/auth/

+0

Können Sie mir bitte ein Beispiel zeigen? Dokumentation Ich fühlte mich schwer zu verstehen – Serenity

+0

Wenn ich nicht falsch liege, zeigt die Dokumentation nur die Einstellung für bestimmte Modelle, aber mein Anwendungsfall setzt die Erlaubnis für alle Modelle gleichzeitig – Serenity

Verwandte Themen