からの辞書を使用してフォームを初期化します。データをデータベースに保存してドラフトテーブルに保存する '保存'フォームオプションが必要です。 (私は提出されたデータとそれを混合しない)。request.POST
ユーザーが送信をクリックすると、ドラフトを作成し、POSTデータを入力します。
Draft.objects.get_or_create(email=email)
draft.data = post_to_json(self.request.POST)
draft.save()
Post_to_jsonは、以下の
def post_to_json(post):
dictionary = {}
for key in post.keys():
data = post.getlist(key)
dictionary[key] = data
return json.dumps(dictionary)
を行い、それは電子メールがPOSTでmulticheckbox {"email": ["[email protected]"], "skills": ["01", "02", "03", "04"]}
とpost_to_jsonがあるが、そのように保存し、入力フィールドやスキルだった場合、それがそうであるようPOSTが保存されます。 (もし私がちょうどそれをダンプすれば、私は{email": "[email protected]", "skills": "04"}
を得るだろうので、いくつかのスキルは失われるでしょう(フォームで正しく初期化されないことは言うまでもありません))。
これで、ユーザーが返品して処理を続行するときにフォームを初期化する方法に問題がありました。
私が実行しようとしました:
def get_initial(self):
draft_uuid = self.kwargs.get('uuid')
draft = Draft.objects.get(uuid=draft_uuid)
return json.loads(draft.data)
しかし、その後のブラウザで私は
["[email protected]"]
だけではなく
[email protected]
をあらかじめ入力しています。
DjangoはMyFormClass(request.POST)を実行したときに実際にフォームをあらかじめ正確に埋め込むことができますが、POSTを辞書に変換して同じ方法で使用しようとすると失敗しますか?
私の目標は、辞書からフォームにデータを読み込んで、ブラウザにあらかじめ入力しておくことです。
どのようにすればいいですか?
私のデータがどのように見えるので、私はすでにそれが動作しないことを試みた: '{「メール」:[ '私の@ mail.com ']} 'そうすれば、私は' [' [email protected] '] 'という形をしています.....もしlen(value)= = 1:戻り値[0] 'しかし、1つの答えだけがチェックされていれば、マルチチェックボックスでは機能しません。 – Zoli