【问题标题】:How can I relate some, but not all, models to users using Django?如何将一些(但不是全部)模型与使用 Django 的用户联系起来?
【发布时间】:2020-02-07 08:01:33
【问题描述】:

我有一个项目,其中包含两个不同的应用:用户和学校。在我当前的实现中,用户应用程序包含一个从 Djagno 的 AbstractUser 派生的自定义用户类。它定义了允许的用户类型为学生或教师,用户必须在注册时选择一个。学校应用包含一个课堂模型,我需要将其与学生和一位或多位教师联系起来。

我在这里有两个主要问题。第一个是关于如何将教室模型与仅根据用户类型限制访问的特定用户相关联。我尝试在课堂模型中使用 ManyToManyField 关系,以便将实例与创建它的用户相关联(然后我稍后将允许用户添加学生)。看来我没有正确理解这个领域——它实际上是所有课堂实例的所有用户。这显然不符合我限制不同教室实例之间访问的要求。

OneToOneField 和 ForeignKey 似乎也不能满足我的需求。我已尝试将这些字段添加到我的用户,但随后我被限制为每个用户一个教室,这也是不可接受的。

我还尝试过创建名为“Classroom_A_teachers”和“Classroom_A_students”之类的组,然后为它们分配权限。这种方法似乎比必要的复杂。

我在这里忽略了什么吗?这是我的第一个 Django 项目,我很容易错过一些基本的东西。

问题二是关于添加教师和学生模型。我想让注册为教师的用户能够创建一个教室实例,然后用学生实例填充该教室。学生也可以选择创建一个帐户。他们会从老师那里收到一个教室 ID,输入它,然后他们的帐户将链接到教室实例。然后如何将此用户与现有的学生模型相关联?我一直在玩弄这个概念,但没有成功。

非常感谢任何见解!

【问题讨论】:

    标签: python django django-models django-users


    【解决方案1】:

    看来我没有正确理解这个字段——它实际上是所有课堂实例的所有用户。

    它不应该那样做。它可以在 Django Admin 中看起来那样。真正在 ManyToMany 字段中的只有那些突出显示/灰色的。

    ManyToMany 适合您的用例。

    【讨论】:

    • 感谢您的帮助,马修。没有突出显示任何项目,所以我假设所有用户都已添加。
    猜你喜欢
    • 2019-11-24
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2023-03-03
    • 2017-05-09
    • 2013-12-10
    相关资源
    最近更新 更多