我正在尝试执行django查询,但可能会有几个不同的WHERE
参数。所以我想做的事情如下:
querystring = "subcat__id__in=[1,3,5]"
Listing.objects.filter(querystring)
此处列表在我的模型中定义,它包含多对多字段subcat
。但是,这会引发ValueError
,因为过滤器不接受字符串作为其参数。 Python中是否有一种方法可以将字符串作为其内容而非字符串进行求值?像print语句一样打印字符串的内联值而不是标准输出。
顺便说一下,我不仅仅这样做的原因
querystring = [1,3,5]
Listing.objects.filter(subcat__id__in=querystring)
是我并不总是过滤subcat__id
,有时它是一个或几个其他参数,我宁愿不必写出一堆由if语句控制的独立查询。任何建议都非常感谢。
答案 0 :(得分:56)
...也许
filter_dict = {'subcat__id__in': [1,3,5]}
Listing.objects.filter(**filter_dict)
答案 1 :(得分:9)
Listing.objects.filter(**{"subcat__id__in": ast.literal_eval("[1,3,5]")})