此字段是必填项。Django中ImageField和FileField的错误
我刚开始学习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()
我完全不知道为什么会出现这样的错误。
2 个回答
1
在 forms.py 文件中
class campoImagenForm(forms.ModelForm):
imagen = forms.ImageField(verbose_name='Imagen', upload_to='archivos', required = False)
class Meta:
model = campoImagen
fields = ('imagen',)
5
首先,在你的模型里,把字段设置为空和可为空:
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
不过,模型部分是必须的。否则,你可能会遇到数据库不一致的错误。