简体   繁体   English

Django 中不同角色的权限

[英]Permissions to different roles in Django

I am creating an authentication system for my Django web-app.我正在为我的 Django 网络应用程序创建一个身份验证系统。 This is my model:这是我的模型:

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

I want to give different permissions and features to teachers and students, but I have no clue on how.我想为教师和学生提供不同的权限和功能,但我不知道如何。 Any ideas?有任何想法吗? Thanks!谢谢!

You can use the default authentication and permission mechanism of Django.您可以使用 Django 的默认身份验证和权限机制。 You just need to extend User model.您只需要扩展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)

You can then create a Student and Teacher object with appropriate permissions as the same as User .然后,您可以像User一样创建具有适当权限的StudentTeacher对象。 It will also create an User object.它还将创建一个User对象。 Then, you can access permission as you access on User instance.然后,您可以在访问User实例时访问权限。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM