Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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
Django Imagefield无法通过ModelForm正常工作_Django_Django Forms_Django Models - Fatal编程技术网

Django Imagefield无法通过ModelForm正常工作

Django Imagefield无法通过ModelForm正常工作,django,django-forms,django-models,Django,Django Forms,Django Models,我肯定我在做一件很明显很愚蠢的事情,但我已经试着弄明白了几个小时了,没有什么东西冲着我跳 我使用的是一个模型表单,所以我可以从模型中公开一些字段进行编辑。2x图像字段,1x文本字段。表单被处理,文本字段工作。这两个图像字段不起作用,这就是我今天在这里的原因 我正在使用Django 1.0.2 下面是相关的代码(询问您是否需要更多——我不包括HTML,因为该部分似乎工作正常): 型号: class Company(models.Model): #... logo = models.

我肯定我在做一件很明显很愚蠢的事情,但我已经试着弄明白了几个小时了,没有什么东西冲着我跳

我使用的是一个模型表单,所以我可以从模型中公开一些字段进行编辑。2x图像字段,1x文本字段。表单被处理,文本字段工作。这两个图像字段不起作用,这就是我今天在这里的原因

我正在使用Django 1.0.2

下面是相关的代码(询问您是否需要更多——我不包括HTML,因为该部分似乎工作正常):

型号:

class Company(models.Model):
    #...
    logo = models.ImageField(upload_to='logos', blank=True)
    intro_pic = models.ImageField(upload_to='intropics', blank=True)
    intro_text = models.TextField(blank=True)
视图和表单:

def admin_edit(request, company_slug):
    company = get_object_or_404(Company, slug = company_slug)

    f = AdminEditForm(instance = company)
    if request.method == 'POST':
        f = AdminEditForm(request.POST, instance = company)
        if f.is_valid():
            print "Processing form"
            print f.cleaned_data['intro_pic']
            f.save()

    return render_to_response('uadmin/edit.html', {'company':company, 'f':f}, RequestContext(request))


class AdminEditForm(ModelForm):
    class Meta:
        model = Company
        fields = ['logo', 'intro_pic', 'intro_text']

我觉得自己像个白痴。为了让Django能够处理上传的文件,您需要将request.files变量传递给表单(有意义,对吧?!)

在我的例子中,以下行来自:

f = AdminEditForm(request.POST, instance = company)
致:

另一件要检查的事情(如果将来遇到类似的情况)是表单是多部分的。您的
标记应如下所示:

<form enctype="multipart/form-data" method="post" action="">


发生这种情况是因为我缺少文件输入的“name”属性。

谢谢!在我的例子中,我丢失了
enctype=“multipart/form data”
part,这是一件非常容易丢失的事情。我发现让Crispy处理我的表单标签(以及其他东西)会有所帮助。
<form enctype="multipart/form-data" method="post" action="">