这个问题让我接近我想做的事情,但我仍然需要进一步了解。 Django. Q objects dynamicaly generate
我在django中有一个视图,可以查看是否已将任何查询参数发送到该URL。我期待一些查询对象具有多重值。
即。 domain.com/?neighborhood=Logan Square&neighborhood=River North
我抓住了queryparams并把它们放在一个列表中。我现在正试图遍历该列表并使用或逻辑过滤查询参数。 https://docs.djangoproject.com/en/1.11/topics/db/queries/#complex-lookups-with-q
为此,我知道我需要使用Q对象。
正确的代码是:
Q(邻里='洛根广场')| Q(邻里='River North')
所以我需要做的是 1动态添加查询Q对象,然后还添加|动态操作符,用于for循环中的所有对象。
答案 0 :(得分:0)
根本不需要这个。您只需使用__in
:
MyModel.objects.filter(neighborhood__in=request.GET.getlist('neighborhood'))
答案 1 :(得分:0)
如果我正确理解你的问题。
“你可能会,也可能不会得到查询参数。”?
query = ModelName.objects.none() # setting a Q() instance (maybe skippable)
for a_item in neighbourhood_list:
query |= (Q(neighborhood = a_item))
query = ModelName.objects.filter(query)
您可能需要对其进行测试,并对其进行一些编辑,但会达到您想要的效果。