我有一个处理 POST 请求并尝试创建新对象的视图。但是,我知道某些 POST 数据是无效的……但我想修复它并继续创建对象。
我能想出能够在 ModelForm 中“修复”数据的唯一方法是创建一个“is_valid()”表单。为此,我可以使用 POST 数据创建表单,也可以使用现有实例创建它。不幸的是,如果我使用 POST 数据,因为其中一些是无效的,表单将无法验证,因此我无法获取表单中的数据来修复它。如果我用一个已经存在的实例创建它,这是可行的,但是当显示表单时,任何剩余的错误都会因任何原因被忽略(因此不会出现在网页上。)我尝试了创建的组合来自 POST 数据的 Model 表单并给它一个实例,但这似乎没有帮助。此外,我尝试修改(副本)POST数据,修复它,然后从' 固定'POST数据。这类作品,除了我的表单中有一些 ImageFields 之外,它们似乎只是被忽略了。
任何帮助将不胜感激。我查看了所有可以找到的好页面,但无济于事。
也许有更好的方法来做到这一点?我要解决的问题是我想要一个包含 ImageFields 的模型。我第一次提交表单时,用户需要为每个字段“上传”图像。但是,如果他不更新其中一个字段的图像,我希望新表单在尚未上传图像的字段上提供一个图像上传按钮,并且只是一个带有图像名称的文本字段已上传。
编辑 2010 年 9 月 15 日:
好的,我想我可以将上述所有问题简化为:
定义测试(请求): test_form = UserProfileForm() 有效 = test_form.is_valid() 返回渲染('testing.tmpl',locals(),请求)
当上面的代码被渲染时,'valid' 显示为 False(正如人们所期望的那样),但 'test_form' 渲染没有任何错误。我已经通读(如果可能不理解?)关于模型和模型表单的文档,我看到大多数时候模型表单(在我的例子中:UserProfileForm)是使用指定的“实例”创建的。但是,1)我还没有实例,2)我仍然希望非实例表单显示错误。我确定我缺少一些东西。请照亮。:)
还有一件事,也许上面的答案无论如何都会回答,但据我所知,is_valid() 调用应该调用我为 UserProfileForm 定义的“clean()”函数。但是,(不是 python 大师)我将“raise ValidationError()”放在 clean() 的顶部,当我运行代码时,没有显示错误。想法?
更新:我发现了问题,答案如下。谢谢!