将代码在代码Python Django和Q对象的内部注入代码



这个问题使我接近我想做的事情,但我仍然需要进一步理解。Django。q对象动态生成

i在Django中有一个视图,希望查看是否已将任何查询参数发送到URL。我希望某些查询对象具有多重值。IE。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(邻居='Logan Square'(|Q(邻居='River North'(

所以我需要做的是1动态添加查询Q对象,然后添加|为for循环中的所有对象动态运算符。

您根本不需要。您只需使用__in

MyModel.objects.filter(neighborhood__in=request.GET.getlist('neighborhood'))

如果我正确理解了您的问题。
"您可能或可能不会获得查询参数。"?

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)

您可能必须对其进行测试,并进行一些编辑,但会做您想要的技巧。

最新更新