这是必填栏。 Django 上的 ImageField 和 FileField 错误
Posted
技术标签:
【中文标题】这是必填栏。 Django 上的 ImageField 和 FileField 错误【英文标题】:This field is required. Error with ImageField and FileField on Django 【发布时间】:2014-06-30 13:26:32 【问题描述】:我是 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()
我不知道为什么会出现这样的错误。
【问题讨论】:
【参考方案1】:首先,在您的模型中使您的字段为空且可为空:
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
但是,模型部分是强制性的。否则您可能会遇到数据库不一致错误。
请记住,blank 和 null 是不同的东西。但是,它们确实可以很好地协同工作,并且应该可以满足您的需求。
【讨论】:
【参考方案2】:在forms.py中
class campoImagenForm(forms.ModelForm):
imagen = forms.ImageField(verbose_name='Imagen', upload_to='archivos', required = False)
class Meta:
model = campoImagen
fields = ('imagen',)
【讨论】:
以上是关于这是必填栏。 Django 上的 ImageField 和 FileField 错误的主要内容,如果未能解决你的问题,请参考以下文章
Django Rest Framework render_form & 必填字段
Django ModelForm booleanfield 必填字段不起作用