首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django将多个用户合并到一个模型中。一个关于用户的模型

Django将多个用户合并到一个模型中。一个关于用户的模型
EN

Stack Overflow用户
提问于 2019-06-20 23:59:02
回答 2查看 204关注 0票数 1

我想知道有多少用户可以与一个模型的一个实例相关联。

我有一个体育俱乐部的项目。有许多用户(管理员和工作人员)只有一个俱乐部。我似乎不能与用户模型形成多对一的关系。我想主要根据俱乐部进行过滤。假设有3个俱乐部使用这个项目,每个俱乐部都希望被俱乐部分开,而不是被用户分开。

下面是我的模型的简化版本。我也试着将ForeignKey添加到俱乐部,然后走另一条路。

代码语言:javascript
复制
Class Club(models.model):
    name = models.CharField(max_length=40, null=True)


Class User(AbstractBaseUser):
    name = models.CharField(max_length=40, null=True)
    club = models.ForeignKey(Club, on_delete=models.CASCADE)
EN

回答 2

Stack Overflow用户

发布于 2019-06-21 00:19:45

既然只有一个俱乐部,但有不同的用户,我认为你的模型应该保持这样,但在用户模型上,你可以为俱乐部中的不同用户分配不同的角色。

代码语言:javascript
复制
Class User(AbstractBaseUser):
    name = models.CharField(max_length=40, null=True)
    club = models.ForeignKey(Club, on_delete=models.CASCADE)
    is_staff = models.BooleanField(default=False)
    is_admin = models.BooleanField(default=False)
票数 1
EN

Stack Overflow用户

发布于 2019-06-21 00:48:53

您正在适当地定义您的模型。创建管理器时,与之关联的模型的每个实例(这里是您的俱乐部模型)都可以通过ForeignKey对象访问与其关联的实例。您可以在ForeignKey字段定义中定义"related_name“参数,以便您的俱乐部对象可以通过自定义名称(而不是默认名称)访问与其关联的用户:

代码语言:javascript
复制
Class Club(models.model):
    name = models.CharField(max_length=40, null=True)

Class User(AbstractBaseUser):
    name = models.CharField(max_length=40, null=True)
    club = models.ForeignKey(Club, related_name="members", on_delete=models.CASCADE)

然后,您可以使用club.members.all访问相关用户,假设" club“是传递给模板的俱乐部上下文对象的名称,”related_name“是用户模型与俱乐部的ForeignKey关系的成员。举个简单的例子,如果你想列出一个俱乐部的成员,你可以这样做:

代码语言:javascript
复制
{% for member in club.members.all %}
    <p>{{member.name}} is a member</p>
{% endfor %}

有关ForeignKey关系的更多信息,请查看此链接:https://docs.djangoproject.com/en/2.2/topics/db/queries/#following-relationships-backward

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56689833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档