エンドユーザーがトランザクションデータをフィルタリングできるフォームを作成しようとしています。私は "支払い方法"のフィルタを持っています。フォームクエリセットフィルタが機能していません。「CHOICES = ...」と一致しないcleaned_data
For Example: credit card, cash, check etc.
何らかの理由で、私の結果がフィルタリングされず(何も表示されません)。フォームが私のフィルターの値を利用可能な選択肢から変更することに気付きました。
For Example: the "cash" choice becomes [u'cash'].
選択肢のオプションをフィルタに直接入力すると機能します。
For Example: Transactions.objects.filter(payment_method__exact="cash")
これは関係があるかどうかわかりません。どうすればフィルタを動作させることができますか?
MODELS:
class QueryForm(forms.Form):
payment_method = forms.MultipleChoiceField(choices=PAYMENT_TYPE)
VIEW:
def findtransation(request):
qf = QueryForm()
if request.method == "POST":
qf = QueryForm(request.POST)
if qf.is_valid():
p = qf.cleaned_data['payment_method']
results = Transactions.objects.filter(payment_method__exact=p)
return render_to_response('testdb/results.html', {'results': results, 'query_form': qf,}, context_instance=RequestContext(request))
return render_to_response('testdb/results.html', {'query_form': qf,}, context_instance=RequestContext(request))
素晴らしい、それは動作しますが、今、私はオプションを1つだけ選択することを強制しています。複数のオプションを選択するにはどうすればよいですか? – thedeepfield
複数の支払い方法で取引を作成することはできますか?クレジットカードで部分的に支払い、部分的に現金で支払いますか?ダニエル・ローズマンの答えはあなたが必要と思われることをする方法を説明します。 – alan