【发布时间】:2019-08-10 03:54:37
【问题描述】:
我目前正在学习 Django,特别是 DRF 来制作一个将由 Web 应用程序客户端使用的 API。该应用程序适用于教授数学和科学课外课程的老师。我的基本想法是会有两种类型的用户,学生和教师。教师显然比学生拥有更多的访问权限。问题是,django 用户类具有 is_admin 属性,并且由于只有教师可能是站点的管理员,因此我无法创建具有 is_admin 和 user_type 属性的单个用户类。例如,具有 is_admin=True 和 user_type=Student 的用户将是无效组合。我的想法是将我的用户类作为抽象基类,然后创建两个独立的类,学生和教师,它们继承自它。从只有教师可以发表文章的意义上说,这也是理想的,这意味着学生类将没有该权限,但是我面临另一个问题。所有用户都有一个配置文件。 Profile 将存储用户的个人简介、头像图像等。但是在 Profile 中设置 OneToOneField 关系时,profile 必须与 Student 和 Teachers 具有该关系,因此是所有 User 类型。我该如何建立这种关系?我可以说 OneToOneField(User) 并且由于继承,用户可能是学生或教师吗?如果没有,我该怎么办?
如果您有经验并且正在思考,他(即我)到底为什么要这样做?请随时评论我的设计计划,并告诉我一个更好的设计会是什么样子。提前致谢。
编辑:为每个用户提供一个个人资料、存储个人简介和图像等有什么好处吗?与将这些信息存储在 User 模型中相比,这样做有什么好处吗?
【问题讨论】:
标签: django api django-models django-rest-framework backend