【问题标题】:Django [ create userS with specific permission ]Django [创建具有特定权限的用户]
【发布时间】:2018-06-26 13:41:34
【问题描述】:

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

首先管理员可以创建 2 类用户 [教师 - 学生]

管理员:

只有管理员可以为特定课程创建课程和家庭作业。

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

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

老师:

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

学生:

学生 - 只能看到作业并提交它,如果老师要求它重新做。​​

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

任何帮助都非常感谢。

谢谢

【问题讨论】:

  • 您的具体问题是什么?
  • 无法创建特定用户 [教师 - 学生] 的权限。
  • 首先是扩展抽象用户并添加两个字段,TeacherStudent。使用user = User.objects.get(),然后使用if user.is_superuser = True: ...。不确定这里似乎是什么问题?

标签: django python-3.x


【解决方案1】:

如果我对您的问题的理解正确,那么这样的模型结构应该可以帮助您入门。我故意省略了导入等,因为它们应该很明显或很容易在谷歌上搜索。

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 模型来模拟给定学生对家庭作业的“回复”。

【讨论】:

  • 非常感谢,你为我节省了很多时间,因为我试图将每一个都作为一个应用程序来做。谢谢。
猜你喜欢
  • 2011-03-07
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 2016-09-16
  • 1970-01-01
相关资源
最近更新 更多