Django:如何查询数组中的所有值?
Django: how to query all values in an array?
我有一个包含多个值的复选框。例如,hobbies
。当用户选择一些 hobbies
时,他想看到 有 所有这些爱好的人。
为了清楚起见,我没有详细介绍,所以这里是我如何读取所有选中的值并将它们放入我的 "big" 查询中,正如您可能猜到的那样:q
:
hobbies2 = [int(l) for l in g.getlist('hobbies2')]
if len(hobbies2):
q = q & Q(personne__hobbies2__in=hobbies2)
问题是 returns 所有有共同爱好的人(即像“or
”,而不是“and
”)。
如何使用 and
获取所有这些多对多值?
__in
运算符用于按集合过滤。它不适用于在多对多关系中一次检查多个值。
在SQL中直译为:
SELECT ... WHERE hobbies IN (1, 3, 4);
因此您需要使用 AND 条件构建查询。您可以使用连续过滤器执行此操作:
queryset = Personne.objects.all()
# build up the queryset with multiple filters
for hobby in hobbies2:
queryset = queryset.filter(hobbies2=hobby)
我有一个包含多个值的复选框。例如,hobbies
。当用户选择一些 hobbies
时,他想看到 有 所有这些爱好的人。
为了清楚起见,我没有详细介绍,所以这里是我如何读取所有选中的值并将它们放入我的 "big" 查询中,正如您可能猜到的那样:q
:
hobbies2 = [int(l) for l in g.getlist('hobbies2')]
if len(hobbies2):
q = q & Q(personne__hobbies2__in=hobbies2)
问题是 returns 所有有共同爱好的人(即像“or
”,而不是“and
”)。
如何使用 and
获取所有这些多对多值?
__in
运算符用于按集合过滤。它不适用于在多对多关系中一次检查多个值。
在SQL中直译为:
SELECT ... WHERE hobbies IN (1, 3, 4);
因此您需要使用 AND 条件构建查询。您可以使用连续过滤器执行此操作:
queryset = Personne.objects.all()
# build up the queryset with multiple filters
for hobby in hobbies2:
queryset = queryset.filter(hobbies2=hobby)