【问题标题】:django generic view update/create: update works but create raises IntegrityErrordjango 通用视图更新/创建:更新有效,但创建引发 IntegrityError
【发布时间】:2013-11-10 16:33:22
【问题描述】:
我将CreateView 和UpdateView 直接用于我名为dydict 的应用程序的urls.py。在文件forms.py 中,我使用ModelForm 并排除了几个字段,其中一些字段应在创建或更新时设置。因此,如标题中所述,update 部分有效,但创建部分无效,这很明显,因为我排除的必填字段被发送为空,这在我的情况下是不允许的。所以这里的问题是,我应该如何将排除的字段填充到文件forms.py 中,这样我就不必覆盖CreateView?
提前致谢。
【问题讨论】:
标签:
django
django-forms
django-generic-views
【解决方案1】:
好吧,您必须在某处设置必填字段。如果您不希望它们在表单中显示或可编辑,您的选择是在视图中设置它们(通过使用 CreateView 的自定义子类)或者如果适合您的设计在 save 方法中模型类。或者在模型中的字段上声明一个适当的default 值。
允许字段进入表单也可以,但将它们设置为使用HiddenInput 小部件。这对恶意输入是不安全的,所以我不会对纯自动化字段这样做。
【解决方案2】:
您不能排除在模型定义中按要求设置的字段。您需要为每个模型字段定义blank=True/null=True。
如果这不能解决您的问题,请向我们展示模型和表单定义,以便我们确切知道代码的样子。