这是必填栏。 Django上的ImageField和FileField出错

时间:2014-05-13 01:54:39

标签: python django forms model

我是Django的新手,我正在使用Django 1.6.1,在我的一个表单中我得到了下一个错误

 This field is required.

我不明白为什么会收到此错误,我的表单非常基本,所以我的模型,发出此错误的声明是form.is_valid(),但我不知道为什么。 一些帮助将是apreciate。

我的观点是:

if request.method == 'POST':
    form = campoImagenForm(request.POST, request.FILES)
    if form.is_valid():
        articulo = form.save(commit=False)
        articulo.item = item
        articulo.atributo = atributo
        articulo.save()
        return HttpResponseRedirect('/workproject/' + str(project.id))

我的表格是:

class campoImagenForm(forms.ModelForm):
    class Meta:
        model = campoImagen
        fields = ('imagen',)

我的模特是:

class campoImagen(models.Model):
    item = models.ForeignKey(ItemBase)
    atributo = models.ForeignKey(TipoItem)
    imagen = models.ImageField(verbose_name='Imagen', upload_to='archivos')
    version = models.IntegerField()

我不知道为什么会出现这样的错误。

2 个答案:

答案 0 :(得分:2)

首先,在您的模型中,将字段设为空并可为空:

class campoImagen(models.Model):
    # [...]
    imagen = models.ImageField(verbose_name='Imagen', upload_to='archivos', null=True, blank=True)

然后在您的模型表单中更改字段的required参数:

class campoImagenForm(forms.ModelForm):
    class Meta:
        model = campoImagen
        fields = ('imagen',)

    def __init__(self, *args, **kwargs):
        super(campoImagenForm, self).__init__(*args, **kwargs)
        self.fields['imagen'].required = False

但是,模型部分是强制性的。否则,您可能会遇到数据库不一致错误。

请注意blanknull是不同的事情。但是,他们一起工作得很好,应该给你你想要的东西。

答案 1 :(得分:0)

在forms.py

class campoImagenForm(forms.ModelForm):
    imagen = forms.ImageField(verbose_name='Imagen', upload_to='archivos', required = False)
    class Meta:
        model = campoImagen
        fields = ('imagen',)