我想要一个'保存'表单选项,它将数据保存到数据库到草稿表中。 (所以我不把它与提交的数据混合)。使用请求字典初始化表单。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