django - Django [创建具有特定权限的用户]
问题描述
我正在开发一个电子学习平台,但是,有一个特定的要求。
首先,管理员可以创建 2 类用户 [教师 - 学生]
行政:
只有管理员可以为特定课程创建课程和家庭作业。
将教师分配给特定课程并且只能查看它,他无法访问其他课程。
将学生分配给特定的家庭作业和/或课程。
老师:
老师只能看到课程[已分配给]和作业,并且可以要求学生重新做。
学生 :
学生 - 只能看到作业并提交它,如果老师要求它重新做。
我尝试了 DRY 原理,但我无法解决问题。
任何帮助真的很感激。
谢谢
解决方案
如果我正确理解您的问题,那么像这样的模型结构应该可以帮助您入门。我故意省略了导入等,因为它们应该很明显或易于搜索。
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
模型来模拟给定学生对家庭作业的“回复”。
推荐阅读
- angular - Socket.io 和 Angular 使用异步管道
- html - 在 Angular 中,不会为 Angular mat-option 调用 onSelectionChange
- python - 如何通过 dev_appserver.py 在 Google App Engine 上使用 BeautifulSoup 和 lxml
- python - 在 Arduino 显示器上打印 Python 输出
- python - 在 Pyramid 框架中渲染交互式表格
- pandas - Pandas 中的非串联轴是什么?
- php - MSSQL 查询中的筛选器在包含特殊字符时无法匹配“相同”字符串。如何纠正?
- scala - 升级 Play 到 2.4,Slick 到 3.1.1,值 withTransaction 不是 play.api.db.slick.Database 的成员
- php - 如何将 base64 编码的附件转换为文件(PDF、msg、eml)
- sas - proc tabulate 删除默认边框和颜色