使用OR进行Django查询

时间:2012-01-25 00:04:24

标签: django django-models

我的查询集为providers

>>> provider_qs = Provider.objects.filter(...)
[<Provider: Gin Investors>, <Provider: IND INVESTORS>]

获取这些提供商的所有财务报表的查询是什么?像 -

这样的东西
>> fs = FinancialStatement.objects.filter(provider__in provider_qs)

2 个答案:

答案 0 :(得分:2)

是的,您可以这样做:

fs = FinancialStatement.objects.filter(provider__in=provider_qs)

Django将此优化为一个SQL查询。在Django QuerySet documentation中有一个确切的例子:

inner_qs = Blog.objects.filter(name__contains='Cheddar')
entries = Entry.objects.filter(blog__in=inner_qs)

答案 1 :(得分:0)

您可以在一行中执行此操作:

fs = FinancialStatement.objects.filter(provider__whatever__more='asd')

或使用 Mitar 的答案:

entries = Entry.objects.filter(blog__name__contains='Cheddar')

您应该在Django querysets上阅读更多内容。