new*_*mer 5 python forms django model
我是 Django 的新手,我使用的是 Django 1.6.1 并且在我的一个表单中出现下一个错误
This field is required.
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会出现此错误,我的表单非常基本,因此我的模型,引发此错误的语句是 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))
Run Code Online (Sandbox Code Playgroud)
我的表格是:
class campoImagenForm(forms.ModelForm):
class Meta:
model = campoImagen
fields = ('imagen',)
Run Code Online (Sandbox Code Playgroud)
我的模型是:
class campoImagen(models.Model):
item = models.ForeignKey(ItemBase)
atributo = models.ForeignKey(TipoItem)
imagen = models.ImageField(verbose_name='Imagen', upload_to='archivos')
version = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会出现这样的错误。
首先,在模型中将字段设置为空且可为空:
class campoImagen(models.Model):
# [...]
imagen = models.ImageField(verbose_name='Imagen', upload_to='archivos', null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
然后在模型表单中更改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
Run Code Online (Sandbox Code Playgroud)
然而,模型部分是强制性的。否则,您可能会收到数据库不一致错误。
请记住,空白和空是不同的东西。然而,它们确实可以很好地协同工作,并且应该给您带来您想要的东西。