此字段必填。Djang上的ImageField和FileField出错

2024-06-29 00:44:45 发布

您现在位置:Python中文网/ 问答频道 /正文

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

 This field is required.

我不明白为什么会出现这个错误,我的表单是非常基本的,所以我的模型,引发这个错误的语句是form.is_valid(),但我不知道为什么。 一些帮助将是相当可观的。

我的观点是:

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()

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


Tags: django模型form表单ifismodelsrequest
2条回答

在forms.py中

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

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

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是不同的东西。不过,他们合作得很好,应该给你想要的。

相关问题 更多 >