如何在Django ManyToMany关系中返回两个相关模型的字段?

时间:2019-05-26 15:46:12

标签: python django django-models many-to-many

我有两个模型:

class P(mdoels.Model):
    name = models.CharField(null=False,max_length=120)
    ...

class F(mdoels.Model):
    name = models.CharField(null=False,max_length=120)
    ...
    p = models.ManyToManyField(P)

我需要这样的查询:

SELECT p.name, f.name
FROM f
JOIN f_p ON f.id = f_p.f_id
JOIN p ON p.id= f_p.p_id

我可以使用f.objects.filter(),但是它不会返回p的字段,我只需要显示两个名字的列表即可。

psql中,查询的工作方式与我需要的一样。如何在Django中做到这一点?

2 个答案:

答案 0 :(得分:0)

尝试values_list docs

F.objects.values_list('name', 'p__name')

答案 1 :(得分:0)

使用prefetch_related

F.objects.filter(...).prefetch_related('p')