从另一面得到多对多的一面

2024-05-08 02:12:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我将以下三种模型与多对多关系联系起来:

class TeamMember(models.Model):
    member_name = models.CharField(max_length=140)
    title = models.CharField(max_length=140, null=True, blank=True)
    email = models.EmailField()
    report = models.ManyToManyField(Report, through='Owner')

class Report(models.Model):
    report_name = models.CharField(max_length=140)
    report_description = models.TextField(null=True, blank=True)
    last_updated = models.DateTimeField(null=True, blank=True)
    metric = models.ManyToManyField(Metric, through='MetricAssociation')

class Owner(models.Model):
    teammember = models.ForeignKey(TeamMember, on_delete=models.CASCADE) 
    report = models.ForeignKey(Report, on_delete=models.CASCADE)

我想建立一个属于特定报表(由所有者指定)但遇到问题的团队成员的对象列表。目前我有报告的ID。我试过了,但似乎错了:

owners = TeamMember.objects.filter(report__id=id).distinct().values_list('name', flat=True)

Tags: namereporttruemodelmodelsnulllengthmax
1条回答
网友
1楼 · 发布于 2024-05-08 02:12:18

TeamMember模型中没有字段name。你有member_name

owners = TeamMember.objects.filter(report_id=id).distinct().values_list('member_name', flat=True)

另一方面,您可以使用report_id而不是report__id,后者需要一个连接操作

相关问题 更多 >