我想知道有多少用户可以与一个模型的一个实例相关联。
我有一个体育俱乐部的项目。有许多用户(管理员和工作人员)只有一个俱乐部。我似乎不能与用户模型形成多对一的关系。我想主要根据俱乐部进行过滤。假设有3个俱乐部使用这个项目,每个俱乐部都希望被俱乐部分开,而不是被用户分开。
下面是我的模型的简化版本。我也试着将ForeignKey添加到俱乐部,然后走另一条路。
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)发布于 2019-06-21 00:19:45
既然只有一个俱乐部,但有不同的用户,我认为你的模型应该保持这样,但在用户模型上,你可以为俱乐部中的不同用户分配不同的角色。
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)发布于 2019-06-21 00:48:53
您正在适当地定义您的模型。创建管理器时,与之关联的模型的每个实例(这里是您的俱乐部模型)都可以通过ForeignKey对象访问与其关联的实例。您可以在ForeignKey字段定义中定义"related_name“参数,以便您的俱乐部对象可以通过自定义名称(而不是默认名称)访问与其关联的用户:
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关系的成员。举个简单的例子,如果你想列出一个俱乐部的成员,你可以这样做:
{% 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
https://stackoverflow.com/questions/56689833
复制相似问题