2011-05-05 28 views
3

如何在運行時指定任意的Django查詢過濾器?在運行時指定Django查詢過濾器

我們通常使用的過濾器是這樣的...

query_set = MyModel.objects.filter(name__iexact='foobar') 

但如果我有字符串中包含查詢過濾器符?

query_specifier = "name_iexact='foobar'" 
query_set = MyModel.objects.filter(query_specifier) # <-- This doesn't work; How can I do this? 
+0

這也關係:http://stackoverflow.com/questions/310732/in-django-how-does-one-filter-a-queryset-with-dynamic-field-lookups – 2011-05-05 21:47:17

回答

9
query_specifier = { 
    'name__iexact': 'foobar' 
} 
query_set = MyModel.objects.filter(**query_specifier) 
+0

哈哈,duhhh。我沒有直截了當地想。謝謝! – 2011-05-05 20:11:39

+0

這是可行的,因爲Django *是* python,並且** query_specifier將被解壓縮。這裏有一篇關於kwargs的相關文章:http://stackoverflow.com/questions/1769403/understanding-kwargs-in-python – zeekay 2011-05-05 20:14:09