基本的には、ManyToManyフィールドを持つモデルとそのモデルから派生したモデルフォームを持ち、そのフィールドは "複数選択"選択ボックスとしてレンダリングされます。私のテンプレートでは、フィールドを省略してビューのフィールドの値を準備し、その値をrequest.POSTに渡します(実際はrequest.POSTは不変なのでrequest.POSTのコピーです)。 POSTをフォームに入力してから通常どおり続行します。私はこれを行う方法を理解することができません。なぜなら、request.POSTは単純なPython辞書ではなく、少し違った動作をするQueryDictです。カスタムの "リストタイプ"のエントリを作成するにはどうすればいいですか?
私が入力する必要があるフィールドは"not_bases"
です。フォームを使用してウィジェットを作成すると、内部的にはうまく機能しますが、私の好きなUIには適していません。私は、Djangoの便利なデバッグエラーウィンドウを経由してジャンゴフォーム提出POST値を検査すると、作業のQueryDictは次のようになります。
<QueryDict: {u'not_bases': [u'005', u'00AR', u'00F', u'00FD'], [...] }>
それは"not_bases"
の値を表示されたリストであるが、それは単にリストではありません。うまく動かないので、私はただそれに貼り付けることはできません。私はドキュメントを掘り出し、.update()を見つけました。は、と表示されますが、表示されません。私はのQueryDictフォームに、私はnot_bases」というフォーム検証エラーを取得することを養うとき
<QueryDict: {u'not_bases': [u'KMER', u'KYIP'], u'reference': [u''], [...] }>
:しかしここに私のコードです:
newPOST = request.POST.copy()
for base in bases:
newPOST.update({"not_bases": base.identifier})
、ここで出力されるのリストを入力します。値。 " QueryDictのstr()表現から来るリスト見ているものが、まったく同じに見えても、上記の2つのケースで同じではないことは明らかです
どうすればいいですか?
ソースコードを正しく理解していれば、.append()をnot_bases -listにできるはずです。 「うまくいかない」という意味を明確にしていただけますか? –
ハッキングリクエスト.POSTは目標を達成するための間違った方法です。代わりに、そのフィールドを必要としないようにフォームを変更しますが、保存されたモデル(またはPOSTされたデータでフォームが行うもの)に手動で値を設定します。 –