在 CreateView 上创建表单字段的正确 Django 方法,但在 UpdateView 上可选?

Esc*_*her 1 python generics django

假设我创建了一个MyModel具有FileFieldusingCreateView和 associated的模型实例,MyModelCreateForm现在我想在不上传相同头像图像的情况下更新它:

class MyModel(models.Model):
    name = models.CharField()
    avatar = models.ImageField()

class MyModelCreateForm(forms.ModeForm):
    class Meta:
         model = MyModel
         exclude = None

class MyModelCreate(CreateView):
    model = MyModel
    form_class = MyModelCreateForm

class MyModelCreate(UpdateView):
    model = MyModel
    form_class = ?
Run Code Online (Sandbox Code Playgroud)

在 CreateView 的表单上,图像是强制性的。如果我想让它在更新字段上是可选的,那么最像 Django 的方式是什么?

我是否需要为继承自MyModelCreateForm但覆盖ImageFieldrequired属性的 UpdateView 创建一个新表单?还是有更“含电池”的方式?

小智 5

这是使字段成为必需的解决方案:

class Foo(CreateView):

    model = Fiz
    fields = ('bar',)

    def get_form(self, form_class=None):
        form = super(Foo, self).get_form(form_class)
        form.fields['bar'].required = True
        return form
Run Code Online (Sandbox Code Playgroud)