使用字符串作为Django过滤器查询的参数
问题描述:
我试图做一个django查询,但有几个不同的WHERE参数的可能性。所以我想在做类似的:使用字符串作为Django过滤器查询的参数
querystring = "subcat__id__in=[1,3,5]"
Listing.objects.filter(querystring)
这里上市是在我的模型中定义的,它包含了许多对多场“SUBCAT”。但是,这会引发ValueError,因为筛选器不接受字符串作为其参数。 Python中有没有一种方法将字符串评估为其内容而不是字符串?就像打印语句一样,它将内联字符串的值打印出来,而不是输出到标准输出。
顺便说一句,我不只是做
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)
答
Listing.objects.filter(**{"subcat__id__in": ast.literal_eval("[1,3,5]")})
完美,这正是我一直在寻找!非常感谢。 – danny 2010-11-28 03:41:59