Django中不同角色的权限

时间:2020-01-02 04:57:09

标签: python django

我正在为我的Django网络应用创建身份验证系统。这是我的模型:

class Student(models.Model):
    name = models.CharField(max_length=300)

    def __str__(self):
        return self.name

class Teacher(models.Model):
    name = models.CharField(max_length=300)
    total_earnings = models.IntegerField(default="0")
    month_earnings = models.IntegerField(default="0")

    def __str__(self):
        return self.name

class Clase(models.Model):
    name = models.CharField(max_length=300)
    counter = models.IntegerField(default="6")
    language = models.CharField(max_length=10,choices=LANGUAGE_CHOICES, default='english')
    students = models.ManyToManyField(Student)
    teachers = models.ManyToManyField(Teacher)

    def __str__(self):
        return self.name

我想给老师和学生不同的权限和功能,但是我不知道如何使用。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用Django的默认身份验证和权限机制。您只需要扩展User模型。

   class Teacher(User):
        name = models.CharField(max_length=300)
        total_earnings = models.IntegerField(default="0")
        month_earnings = models.IntegerField(default="0")

   class Student(User):
       name = models.CharField(max_length=300)

然后可以创建具有Student相同权限的TeacherUser对象。它还将创建一个User对象。然后,您可以在访问User实例时访问权限。

     teacher.get_all_permissions() # returns permissions of a teacher
     student.get_all_permissions() # returns permissions of a student