【发布时间】:2015-12-30 11:35:38
【问题描述】:
有什么区别
queryset.filter(Q(foo='bar') | Q(foo='baz'))
和
queryset.filter(foo__in=['bar', 'baz'])
我发现有时它们会产生不同的结果,我不知道为什么。
我通过这些查询得到了不同的结果:
In [8]: Profile.objects.filter(image="").count()
Out[8]: 7173
In [9]: Profile.objects.filter(image=None).count()
Out[9]: 25946
In [10]: Profile.objects.filter(image__in=["", None]).count()
Out[10]: 7173
In [11]: Profile.objects.filter(Q(image="") | Q(image=None)).count()
Out[11]: 33119
我使用 PostgreSQL 作为我的数据库引擎。
【问题讨论】:
标签: django filter django-queryset django-orm django-q