我正在使用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