0

我在 Django 中编写一个应用程序,其中有两种类型的用户需要登录 web 应用程序:教师和学生。现在我不确定什么是最好的方法。我已经阅读了很多解释如何扩展用户模型的教程和 Stackoverflow 问题,但我不确定哪个是最佳选择。

要求:

  • 需要2种不同领域的个人资料(老师和学生)
  • 可以拥有单独的管理“对象”,应用程序的超级员工可以在其中登录后端并管理单独的对象。

选项1:

利用该方法扩展 AbstractUser 类。这暂时有效,但是我不知道我是否可以使用 AUTH_USER_MODEL 两次(老师和学生)。现在它是一个包含学生和教师两个领域的个人资料。使用代理模型,我只能为教师或学生显示必要的字段。

选项2:(我认为这是最好的解决方案)

制作 2 个模型(教师和学生),每个模型都有一个外键到用户 (OneToOneField)。这里的问题是,如果网站的管理员创建了一个新的教师或学生,他们还需要先创建一个单独的用户(可以登录),然后在创建教师或学生时链接它。(我可以用我认为的信号来解决这个问题)。

对于这种情况,哪种方法/最佳实践是最好的?

4

1 回答 1

1

我个人会选择选项2。

我不确定您打算如何创建用户(教师/学生)。如果是通过管理面板,那么您可以在创建教师/学生时使用单独的弹出窗口创建用户。这样做将创建该链接。

如果您使用的是自定义表单,则可以包含您希望从用户模型和自定义模型中包含的字段。然后在视图中,您可以在 User 模型和您的自定义模型中创建模型一行并将两者链接起来。

于 2021-07-31T13:07:32.540 回答