我正在尝试使用 Django 进行上传。我尝试上传时没有收到错误消息,并且保存了新项目,但没有图像。其他表单数据都在那里。在过去的 2 天里,我一直在谷歌搜索和堆栈溢出,但找不到修复程序。我也不知道哪里错了!任何建议都会很棒。非常感谢。:)
来自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,它是一个布尔值)。我检查表格是否有效,如果有效,我保存它。为什么它不起作用?项目保存但在管理面板中没有与“照片”关联的文件。