フォームに名前を付けた検索フィールドがありますq
。メンバーを検索するときに、次のようにフィルターをかけたい
results = Member.objects.filter(Q(mid=q) | Q(mobile=q)).order_by('pub_date')
他の形で、私は似たようなことをしたいと思っています。
そのような :
Account.objects.filter(Q(name=q)|Q(card=q)).order_by('pub_date')
が必要なexactly equal filter
ので、使用django-haystack
はやり過ぎです。
単純な基本形:
class SimpleSearchForm(forms.Form):
q = forms.CharField(required=False)
search_fields = []
def __init__(self, model=None):
super(SimpleSearchForm, self).__init__()
if not model:
raise Exception('SimpleSearchForm need init with a model')
self.model = model
def search(self):
q = self.cleaned_data['q']
if len(self.search_fields) > 0:
# construct a Q() statement, filter result and return
しかし、そのような Q() ステートメントを作成する方法がわかりません。