Django Imagefield 无法通过 ModelForm 正常工作

标签 django django-forms django-models

我确定我正在做一些明显很愚蠢的事情,但我已经尝试弄清楚几个小时了,但没有任何事情突然发生在我身上。

我正在使用 ModelForm,因此我可以公开模型中的一些字段以供编辑。 2 个图像字段,1 个文本字段。表单被处理,文本字段工作。这两个 ImageField 不起作用,这就是我今天来到这里的原因。

我正在使用 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)

View 和表单:

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)

收件人:

f = AdminEditForm(request.POST, request.FILES, instance = company)

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

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

关于Django Imagefield 无法通过 ModelForm 正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/680770/

相关文章:

Django - 通过通用 View 加载 Robots.txt

mysql - 在 WebFaction 中使用 Django 和 MySQL

ajax - Django 删除带有确认弹出窗口和多个成功 url 的 CBV

python - Django ModelForm 不保存添加到 request.POST 或通过 form.save(commit=False) 添加的数据

django - 我怎样才能在 Django 中拥有同一个模型的两个外键?

Python/Django 迭代ManyToMany 相关领域

django - 在表单中包含标签 django

python - Django:如何检查用户是否将所有字段留空(或初始值)?

python - "django.db.utils.ProgrammingError: relation "app_user "does not exist"在 manage.py 测试期间

python - Django Model.objects.all() 返回意外的空 QuerySet