Djangoでアップロードを機能させようとしています。アップロードしようとしてもエラーは発生せず、新しいアイテムは保存されますが、画像はありません。他のフォームデータはすべてそこにあります。過去 2 日間、Google でスタック オーバーフローが発生しており、修正が見つかりません。どこが悪いのかも分からない!どんなアドバイスも素晴らしいでしょう。本当にありがとう。:)
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)を渡します。フォームが有効かどうかを確認し、有効であれば保存します。なぜ機能しないのですか?アイテムは保存されますが、管理パネルには「写真」に関連付けられたファイルがありません。