繁体   English   中英

在CreateView上需要表单域的正确Django方法,而在UpdateView上是可选的?

[英]The proper Django way to make a form field required on CreateView, but optional on UpdateView?

比方说,我创建一个模型MyModel ,有一个实例FileField使用CreateView和相关的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 = ?

在CreateView的窗体上,图像是强制性的。 如果我想在更新字段上将其设置为可选,那么最像Django的方式是什么?

我是否需要为继承自MyModelCreateForm但覆盖MyModelCreateForm required属性的UpdateView新建表单? 还是有更多的“内置电池”方式?

这是一个必填字段的解决方案:

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

我认为不,但您可以在其中实施!

class ModelXForm(ModelForm):

class Meta:
    model = x
    fields = ['image','name']

    def __init__(self,update, survey, **kwargs):
        super(FBRequestForm, self).__init__(**kwargs)
        if not update:
            self.fields['image'].widget.attrs['readonly'] = True
            self.fields['image'].widget = forms.HiddenInput()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM