2015-10-20 70 views
-2

我製作了一個網頁,其中用戶有四個選項來填充併發送到服務器。之後,我在數據庫中有一個篩選器,將結果提供給網頁。如何在django中製作自定義過濾器

所有的過濾器都是可選的。

示例:我有三個參數:這是用戶給出的。

而寫的,現在的問題是

x = SMS.objects.filter(Q(KPImessageId = arg1) | Q(subscriberId = arg2) | 
         Q(state = arg3)) 

的問題是,當我給所有的3個參數,那麼它工作正常,但是當我只給2個參數的話,就不能進行排序,並給出錯誤。

我必須按這些參數排序,如果有arg1存在然後按arg1排序。如果存在arg1arg2,則按兩個參數進行排序。

回答

0

您可以在視圖中動態構建您的Q對象。

q=Q() 
if arg1: 
    q = q | Q(field1=arg1) 
if arg2: 
    q = q | Q(field2=arg2) 
... 
queryset = MyModel.objects.filter(q) 
相關問題