使用一个字符串作为Django过滤器查询的参数

我试图做一个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语句控制的单独的查询。任何建议都非常感激。

也许…

filter_dict = {'subcat__id__in': [1,3,5]}
Listing.objects.filter(**filter_dict)
http://stackoverflow.com/questions/4294752/using-a-string-as-the-argument-to-a-django-filter-query

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:使用一个字符串作为Django过滤器查询的参数