【问题标题】:django generic view update/create: update works but create raises IntegrityErrordjango 通用视图更新/创建:更新有效,但创建引发 IntegrityError
【发布时间】:2013-11-10 16:33:22
【问题描述】:

我将CreateViewUpdateView 直接用于我名为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

      如果这不能解决您的问题,请向我们展示模型和表单定义,以便我们确切知道代码的样子。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-07
        • 1970-01-01
        • 2018-11-08
        • 2016-03-11
        • 2013-06-16
        相关资源
        最近更新 更多