0
我想上傳Django的工作。當我嘗試上載它時,我沒有遇到錯誤,並且新項目已保存,但沒有圖像。其他表格數據都在那裏。過去兩天我一直在使用Google和堆棧溢出,並且找不到修復程序。我甚至不知道它出錯的地方!任何建議都會很棒。非常感謝。 :)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這是一個布爾值)。我檢查表格是否有效,如果有的話,我保存它。爲什麼它不工作?該項目保存但在管理面板中沒有與「照片」相關聯的文件。
我會建議調試:)此外它可能有助於查看生成的表單html,查看來'request.FILES'。 StdImageField類是否正確,它是否可以與標準的ImageField一起工作?在其他視圖中調用另一個視圖也是一個糟糕的主意。應該有一個重定向。 – demalexx 2011-12-28 13:34:00