Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 此字段必填。Django上的ImageField和FileField出错_Python_Django_Forms_Model - Fatal编程技术网

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

Python 此字段必填。Django上的ImageField和FileField出错,python,django,forms,model,Python,Django,Forms,Model,我是Django的新手,我正在使用Django 1.6.1,在我的一个表单中,我得到了下一个错误 This field is required. 我不明白为什么会出现这个错误,我的表单非常基本,所以我的模型,引发这个错误的语句是form.is_valid(),但我不知道为什么。 一些帮助将是非常感谢的 我的看法是: if request.method == 'POST': form = campoImagenForm(request.POST, request.FILES)

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

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

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

class campoImagen(models.Model):
    # [...]
    imagen = models.ImageField(verbose_name='Imagen', upload_to='archivos', null=True, blank=True)
然后在模型表单中,更改字段的
必需
参数:

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
然而,模型部分是强制性的。否则,可能会出现数据库不一致性错误

记住,和是不同的东西。然而,它们确实能很好地协同工作,应该能满足您的需求。

在forms.py中

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