在代码python django和q对象中注入代码

时间:2018-04-04 16:45:43

标签: python django orm

这个问题让我接近我想做的事情,但我仍然需要进一步了解。 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循环中的所有对象。

2 个答案:

答案 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)

您可能需要对其进行测试,并对其进行一些编辑,但会达到您想要的效果。