2011-08-27 19 views
4

如何在視圖上的關鍵字對象過濾器上傳遞變量?如何將過濾器關鍵字上的字符串傳遞給Django對象模型?

我:

my_object = MyModel.objects.filter(my_keyword =my_filter_values) 

我想從一個字符串來可變搶my_keyword,像這樣:

my_string = 'my_keyword' 
my_object = MyModel.objects.filter(my_string=my_filter_values) 

但是,這並不工作,因爲Django不知道my_stringMyModel。我發現this SO question - 我會測試並報告回來。

回答

13

你可以做這樣的事情:

my_filter = {} 
my_filter[my_keyword] = my_filter_value 

my_object = MyModel.objects.filter(**my_filter) 

舉個例子,您的變量可能是:

my_keyword = 'price__gte' 
my_filter_value = 10 

這將導致獲取的所有對象有price >= 10。如果你想對多個字段進行查詢,你可以添加其他線下my_filter[my_keyword]

my_filter[my_keyword] = my_filter_value 
my_filter[my_other_keyword] = my_other_filter_value 
+7

最後一行應改爲: 'my_object = MyModel.objects.filter(** my_filter)' – Ferguzz

相關問題