我想要一個'保存'表單選項,它將數據保存到數據庫到草稿表中。 (所以我不把它與提交的數據混合)。使用請求字典初始化表單。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)
它保存的職位,因爲它是如此,如果郵件是一個輸入字段和技巧在哪裏張貼multicheckbox有{"email": ["[email protected]"], "skills": ["01", "02", "03", "04"]}
和post_to_json保存這種方式。 (如果我只是傾倒它,我會得到{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]']'在形式.....我也試圖像'if len(value)=' = 1:返回值[0]'但我不工作,那麼只有1個答案被勾選時,對於多核框。 – Zoli