2016-08-25 4 views
0

私のモデルではblank=Trueフィールドがあります。私はまた、このモデルで検索しているが、いくつかのフィールドがblank=Trueの場合、このフィールドを記入することはできません。いくつかのフィールドが空の場合はどうすればよいですか?いくつかのフィールドが必要でない場合、djangoモデルで検索する方法

たとえば、名前と姓(空白= True)のモデルがあります。姓が検索フォームに記入されていない場合は、1つのフィルターを作成する必要がありますが、姓が記入されている場合は、姓でFILTERを作成する必要がありますか?あなたが部品でQSを構築することができ

答えて

0

まあ、私は本当に嘲笑の状況があります。私のモデルでは、いくつかのフィールドをblank=Trueにして、マカミゲーションを忘れてしまった!移行を忘れないでください。

0

def you_view(request, name, surname): 
    # ... Get you filter parameters, just an example. 
    qs = MyModel.objects.filter(name=name) 
    if surname: 
     qs = qs.filter(surname=surname) 
    # work with qs 

これはあなたのビューでsurname変数がある場合にのみsurnameによってフィルタリングされます。

1

以下は、フォームデータの長いリストからフィルタを構築する必要がある場合に便利です。

import operator 
from django.db.models import Q 
filter_list = [Q(name=name)] 
if surname: 
    filter_list.append(Q(surname=surname)) 

YourModel.objects.filter(reduce(operator.and_, filter_list)) 
関連する問題