我在 Django 中编写一个应用程序,其中有两种类型的用户需要登录 web 应用程序:教师和学生。现在我不确定什么是最好的方法。我已经阅读了很多解释如何扩展用户模型的教程和 Stackoverflow 问题,但我不确定哪个是最佳选择。
要求:
- 需要2种不同领域的个人资料(老师和学生)
- 可以拥有单独的管理“对象”,应用程序的超级员工可以在其中登录后端并管理单独的对象。
选项1:
利用该方法扩展 AbstractUser 类。这暂时有效,但是我不知道我是否可以使用 AUTH_USER_MODEL 两次(老师和学生)。现在它是一个包含学生和教师两个领域的个人资料。使用代理模型,我只能为教师或学生显示必要的字段。
选项2:(我认为这是最好的解决方案)
制作 2 个模型(教师和学生),每个模型都有一个外键到用户 (OneToOneField)。这里的问题是,如果网站的管理员创建了一个新的教师或学生,他们还需要先创建一个单独的用户(可以登录),然后在创建教师或学生时链接它。(我可以用我认为的信号来解决这个问题)。
对于这种情况,哪种方法/最佳实践是最好的?