【发布时间】:2022-01-23 08:07:59
【问题描述】:
我有一个我认为很简单的问题,但我正在努力找出它是如何工作的。我知道外键的相关名称是如何工作的,但是对于很多领域,这似乎让我很头疼。
我这里有两个 3 模型。如下所示的用户、团队成员和团队模型。
用户模型是内置的 django 模型。
#TeamMember Model
class TeamMember(models.Model):
member = models.ForeignKey(User, on_delete=models.SET(get_default_team_member), verbose_name='Member Name', related_name="team_members")
...
#Team Model
class Team(models.Model):
name = models.CharField(max_length=50)
manager = models.ForeignKey(TeamMember, on_delete=models.SET_NULL, related_name="managers", null=True, blank=True)
team_lead = models.ForeignKey(TeamMember, on_delete=models.SET_NULL, related_name="tls", null=True, blank=True)
tps = models.ForeignKey(TeamMember, on_delete=models.SET_NULL, related_name="tps", null=True, blank=True)
members = models.ManyToManyField(TeamMember, blank=True, related_name="members")
...
现在在一个视图中,我想访问特定的用户团队。我想我可以通过这样做来做到这一点:
member = TeamMember.objects.get(pk=1)
member_team = member.members.name
但是,如果我打印member_name,它什么也不会打印。如果我尝试访问该模型上的任何其他字段,例如member.members.team_lead.first_name,它将无法找到team_lead 字段。我知道这有一个.all() 属性,但我认为它是通过成员字段绑定到团队对象的。因此,如果该成员与团队匹配,它将给我团队。所以我认为如果同一个成员与多个团队相关联(这是可能的)可能是一个问题,所以我厌倦了这样的member.members.all().first().name 并且我收到一个错误,指出它无法从 NoneType 获取名称。
有没有一种简单的方法可以从这样的关系中获取团队名称,还是我最好只与用户进行团队查询?
谢谢, jAC
【问题讨论】:
标签: django django-models django-views django-related-manager