我正在編寫一個視圖,該視圖根據用戶選擇的搜索字段搜索我的模型數據庫。基本的代碼是一樣的東西:Django與kwargs的複雜搜索
def search(request):
if submit in request.POST:
...
kwargs = {}
if request.POST['field1']:
kwargs['field1__icontains'] = request.POST['field1']
if request.POST['field2']:
kwargs['field2__icontains'] = request.POST['field2']
...
results_list = Mymodel.objects.filter(**kwargs)
...
當然,這是好的,如果我的查詢是所有和聲明,但如果我需要在拋出一個或者出現 - 這可能嗎?例如,如果我需要field2__icontains = request.POST['field2']
或field3__icontains = request.POST['field2']
啊好的。這似乎是要走的路。似乎我癡迷於kwargs;)謝謝! – 2011-12-19 12:24:27
順便說一句 - '&='和'+ ='之間有區別嗎? – 2011-12-19 13:09:18
'&'是按位和'。 '+'是加法。它們不可互換,也不是'&='和'+ =' – Alasdair 2011-12-19 13:33:45