Django Forms上传图片 - 表单数据除图片外

时间:2011-12-27 11:07:26

标签: django django-forms django-views django-models django-uploads

我正在努力上传使用Django。我尝试上传它时没有收到错误,并保存了新项目,但没有图像。其他表格数据都在那里。在过去的两天里,我一直在谷歌搜索和堆栈溢出,无法找到解决方案。我甚至都不知道哪里出错了!任何建议都会很棒。非常感谢。 :)

来自views.py的

    if request.method == 'POST':
        form = ItemForm(request.POST, request.FILES, user=request.user, forsale=True)
        if form.is_valid():
            new_item = form.save()
            return item_view(request, marketplace_id, new_item.id)
    else:
        form = ItemForm(user=request.user)
来自models.py的

class Item(models.Model):

    photo =  StdImageField(upload_to='images/', blank=True, size=(500, 500, True), thumbnail_size=(210, 150, True))

    user = models.ForeignKey(User)
    ...

    def __unicode__(self):
        return self.name

class ItemForm(ModelForm):
    class Meta:
        model = Item
        fields = ['name', 'description', 'price', 'shipping', 'photo', 'section']

    def __init__(self, *args, **kwargs):
        self._user = kwargs.pop('user')
        super(ItemForm, self).__init__(*args, **kwargs)

来自模板:

    <form enctype="multipart/form-data" action="" method="post" data-ajax="false">{% csrf_token %}
            {% for field in form %}
                <div class="fieldWrapper" data-role="fieldcontain">
                    {{ field.errors }}
                    {{ field.label_tag }} {{ field }}
                </div>
            {% endfor %}

        <input type="submit" value="Save">
    </form> 

我认为,模板是正确的。 Item模型似乎很好,StdImageField是ImageField的包装器。它在管理面板中工作正常。 表格似乎也很好,没什么特别的。 在我的views.py中,我检查一个POST请求,调用ItemForm并传入request.POST和request.FILES(和forsale这是一个布尔值)。我检查表单是否有效,如果是,我保存。为什么不工作?项目保存,但在管理面板中没有与“照片”相关联的文件。

1 个答案:

答案 0 :(得分:0)

检查与“images /”连接的MEDIA_ROOT设置是否为Django进程的有效且可写路径。

还使用pdb

import pdb; pdb.set_trace()

可以帮助你找到问题,(f.i.看一下request.FILES看看帖子中的所有内容是否正常)。