开发者

Using a string as the argument to a Django filter query

I'm trying to do a django query, but with the possibility of several different WHERE parameters. So I was thinking of doing something like:

querystring = "subcat__id__in=[1,3,5]"
Listing.objects.filter(querystring)

Here Listing is defined in my model, and it contains the Many-To-Many field subcat. However, that raises a ValueError because filter doesn't accept a string as its argument. Is there a way in Python to have a string evaluated as just its contents rather than as a string? Something like a print statement that prints the value of the string in开发者_Go百科line rather than to the standard output.

By the way, the reason I don't just do

querystring = [1,3,5]
Listing.objects.filter(subcat__id__in=querystring)

is that I'm not always filtering for subcat__id, sometimes it's one or several other parameters, and I'd rather not have to write out a bunch of separate queries controlled by if statements. Any advice is much appreciated.


Perhaps...

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]")})
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜