我正在使用EventForm讓用戶編輯事件模型。 在我的模型,我指定的upload_to目錄表單將圖像上傳到'靜態'時將圖像上傳到'media'文件夾
class Event(models.Model):
image = models.ImageField(upload_to='event_image')
和我期待的是被鏈接到模型把它上傳到同一個位置的形式,但它被上傳到媒體 - 我得到的文件名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/event_image/filename',但它沒有上傳,object.image.url是'media/filename',它不存在。 – matchifang
啊。我不確定在這種情況下我會有多少幫助。但是仍然有一些令人困惑的地方:如果文件沒有上傳到'media/event_image/filename'和'object.image.url == media/filename',就像你說的「不存在」那樣,它聽起來像圖像不在任何地方。它去了哪裏?它是否上傳? – erewok