私はイベントフォームを使用して、ユーザーがイベントモデルを編集できるようにしています。 私のモデルでは、私はフォームは「静的」にアップロードする必要がある場合、画像を「メディア」フォルダにアップロードします
class Event(models.Model):
image = models.ImageField(upload_to='event_image')
upload_toディレクトリを指定したと私は同じ場所にアップロードするモデルにリンクされているが、それがメディアにアップロードされたフォーム期待していた - 私が得たファイル名をfrom obj.image.urlは 'media/filename'です。ここに私の形式は次のとおりです。
class EventForm(forms.ModelForm):
image = forms.ImageField(label="Event Image", required=True)
class Meta:
model = Event
views.py:ここ
def edit_event(request, event_id):
if request.method == 'POST':
edited_event = Event.objects.get(id=event_id)
form = EventForm(request.POST, request.FILES, instance=edited_event)
if form.is_valid():
data = form.cleaned_data
cat = Category.objects.get(name=data["category_str"])
Event.objects.filter(id=event_id).update(name=data["name"],description=data["description"],address=data["address"],
volunteerLimit=data["volunteerLimit"],category=cat,minimumAge=data["minimumAge"],
image=data["image"], date=data['date'])
return render(request, 'handsup/index.html')
は、メディアやスタティックルートのための私の設定です:
STATIC_URL = '/static/'
STATIC_DIR = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [STATIC_DIR, ]
MEDIA_DIR = os.path.join(BASE_DIR, 'media')
MEDIA_ROOT = MEDIA_DIR
MEDIA_URL = '/media/'
モデルの画像のすべてがメディア」にアップロードされています/ event_image 'になりますが、変更されたイメージは' media/filename 'にアップロードされますが、そのディレクトリには存在しません。この問題を解決する最良の方法は何ですか? ありがとうございます。
ありがとうございます。私自身の間違い。私は私の質問を変更します。問題はイメージを 'media/event_image/filename'にアップロードする必要がありますが、そこにアップロードされていないため、object.image.urlは存在しない 'media/filename'です。 – matchifang
Ah。私はその場合どのくらいの助けが得られるか分かりません。ただし、ファイルが 'media/event_image/filename'にアップロードされておらず、' object.image.url == media/filename'というファイルが "存在しない"と言うと、それは混乱します。画像はどちらの場所にもありません。それはどこに行きましたか?それはまったくアップロードされていますか? – erewok