我如何将一些(但不是全部)模型与使用 Django 的用户相关联?

How can I relate some, but not all, models to users using Django?

我有一个项目,其中包括两个不同的应用程序:用户和学校。在我当前的实现中,用户应用程序包含一个派生自 Djagno 的 AbstractUser 的自定义用户 class。它将允许的用户类型定义为学生或教师,并且用户在注册时必须 select 一种。学校应用程序包含一个 class 房间模型,我需要将其关联到学生和一位或多位老师。

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

OneToOneField和ForeignKey好像也不符合我的需求。我曾尝试将这些字段添加到我的用户,但后来我被限制在每个用户一个 class 房间,这也是不可接受的。

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

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

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

非常感谢任何见解!

It appears I don't understand this field correctly -- it actually all users to all classroom instances.

不应该那样做。它可以在 Django Admin 中看起来像那样。 ManyToMany 字段中实际只有 highlighted/greyed 个。

ManyToMany 适合您的用例。