Django ImageField url 在管理视图中不正确

Django ImageField url incorrect in admin view

我有一个模型将图像存储在媒体子目录中,"media/games/"。图像上传到正确的位置,但是当我尝试在管理页面中检索它时,它试图在基本媒体/路径中检索它,并且似乎没有深入到游戏文件夹中,所以如果我看下面:

localhost:8000/media/games/image.png

它会显示图像,但如果我在管理员中并单击图像 link 进行预览,它会尝试在以下位置找到它:

localhost:8000/media/image.png

ImageField 不应该是 "games/image.png" 而不是 "image.png" 吗?我认为图像字段没有正确存储路径。

这是我的文件:

型号:

from django.db import models
from django.core.files.storage import FileSystemStorage

fs = FileSystemStorage(location="media/games/")

    class Game(models.Model):
        title = models.CharField(max_length=127, unique=True)
        slug = models.SlugField(max_length=127, unique=True)
        summary = models.TextField(null=True, blank=True)
        description = models.TextField(null=True, blank=True)
        release_date = models.DateField('date released', null=True, blank=True)
        released = models.BooleanField(default=False)
        purchase_link = models.URLField(max_length=255, null=True, blank=True)
        card_image = models.ImageField(storage=fs, null=True, blank=True)
        created = models.DateTimeField(auto_now_add=True)
        updated = models.TimeField(auto_now=True)

        def __str__(self):
            return str(self.title)

网址:

from django.conf.urls import url, include
from django.contrib import admin
from InvenTorrey.settings import base
from django.conf.urls.static import static

from games import urls as game_urls



urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^^api/v1/', include(game_urls)),
]

if base.DEBUG is True:
    urlpatterns += static(base.MEDIA_URL, document_root=base.MEDIA_ROOT)

设置:

BASE_DIR = 
os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
MEDIA_ROOT = os.path.join(BASE_DIR, "media/")
STATIC_ROOT = os.path.join(BASE_DIR,"static/")
STATIC_URL = '/static/'
MEDIA_URL = '/media/'

而不是 storage 参数尝试使用 upload_to:

card_image = models.ImageField(upload_to='games/', null=True, blank=True)

这允许您将图像保存到 media/games/ 目录,并且还将 games/ 添加到图像的 url 路径。