Django查询过滤多对多等

时间:2014-12-18 10:19:18

标签: python django filter django-queryset

考虑到这些关系:

  

出版物 - (n:m) - 文章 - (n:m) - 广告 - (n:1) - 合作伙伴

如何查询所有包含特定合作伙伴广告的出版物?例如:

result = Publication.objects.filter(articles.adverts.partner = partner)

1 个答案:

答案 0 :(得分:2)

您可以使用__访问查询中的外键(或外键attr)。

示例:

result = Publication.objects.filter(articles__adverts__partner = partner)

提示: __< - 这是2个下划线(_ _

让我们假设您的Partner模型有一个名为username的字段,您也可以这样做:

result = Publication.objects.filter(articles__adverts__partner__username = 'username')

你也可以这样做:

result = Publication.objects.filter(articles__adverts__partner__username__icontains = 'adm')