Django [以特定权限创建userS]

时间:2018-06-26 13:41:34

标签: django python-3.x

我正在开发一个电子学习平台,但是有一个特定的要求。

首先,管理员可以创建两种类型的用户[教师-学生]

管理员:

只有管理员可以为特定课程创建课程和HomeWorkS。

将教师分配给特定课程,并且只能查看它,他无法访问其他课程。

将学生分配给特定的家庭作业和/或课程。

老师:

老师只能看到课程[已分配给它]和家庭作业,并且可以要求学生重新做。

学生:

学生-仅在教师要求时才能看到家庭作业并提交并重新做。

我尝试了DRY原理,但无法解决问题。

任何帮助真的很感激。

谢谢

1 个答案:

答案 0 :(得分:0)

如果我正确地理解了您的问题,那么像这样的模型结构应该可以帮助您入门。我故意删除了导入等,因为它们应该是显而易见的或易于搜索的。

class User(AbstractUser):  # This model should be set as the AUTH_USER_MODEL in the settings.
    # The views to create courses should check whether `request.user.is_teacher` is true.
    is_teacher = models.BooleanField(default=False)

    # Likewise, the views one uses to assign courses or homework to users should check
    # whether the target user's `is_student` value is true.
    is_student = models.BooleanField(default=False)


class Course(models.Model):
    teacher = models.ForeignKey(User, related_name='courses_as_teacher')
    students = models.ManyToManyField(User, related_name='courses_as_student')
    # Add a name field, etc.


class Homework(models.Model):
    course = models.ForeignKey(Course)
    assignees = models.ManyToManyField(User)  # (students)
    # Add a name field, etc.

您可能还需要一个HomeworkReply模型来模拟给定学生对家庭作业的“答复”。