【发布时间】:2011-11-20 22:32:10
【问题描述】:
我认为它看起来微不足道,并感到惊讶。
我有什么
我有一个 Django 模型 + 表单(ModelForm)。
我的用户填写了表格,在我看来,我有通常的做法:
if request.POST:
form = myForm(request.POST)
if request.method == "POST" and form.is_valid():
result = form.save(commit=False)
现在我需要大量操作表单的某些字段(在“结果”对象中),我想在保存之前再次检查表单is_valid()。
问题
我尝试使用字典(建议 here)使用“结果”对象(即 ModelForm 对象)创建一个新表单
result_dictionary = dict((x.name, getattr(result, x.name)) for x in result._meta.fields)
或
result_dictionary = model_to_dict(result, fields=[field.name for field in result._meta.fields])
加
testForm = myForm(initial=result_dictionary)
但它没有通过 is_valid() 并且没有给出任何错误! 字段通过 OK 传递给新表单...
有什么想法吗?
【问题讨论】:
-
您是否有任何理由不使用“instance”参数从“result”对象创建表单? - 例如testForm = myForm(instance=result)
-
高兴得太早了.. 这行不通。
testForm.is_bound => False和testForm.is_valid() => False
标签: django django-models django-forms django-views