私は ModelForm で作業し、元の投稿データを保持する MultiValueDict を使用して DB に格納されたデータを渡しますu'first_name': [u'XX'], u'last_name': [u'']
が、フォームは値を実際のフィールドに完全にレンダリングし[u'']
、残りをラップします。
同じ MultiValueDict を通常の Form に渡そうとしても、この問題は発生しません。
辞書を処理する方法や、初期値として割り当てる前にデータを処理する方法がわかりません。
編集:
post からデータを取得してフォームに復元するコード
if request_post_data is not None:
self.form = self.FORM_CLASS(data=request_post_data)
self.draft.raw_data = dict(request_post_data) # preserves multiple values per key
self.draft.save()
else:
# conversion to MultiValueDict restores multiple values per key
self.form = self.FORM_CLASS(initial=MultiValueDict(self.draft.raw_data) if self.draft.raw_data else None)`
request_post_data
データベースのシリアル化されたフィールドから取得され、実際の値は次のようになります。
<MultiValueDict: {u'last_name': [u''], u'suffix': [u''], u'prefix': [u''], u'first_name': [u'XX'], u'middle_name': [u'']}>
これは、次のように私のフォームに表示されます(ModelFormに送信された場合):
ご協力いただきありがとうございます!