【发布时间】:2018-06-12 14:25:23
【问题描述】:
我有一个带有 ImageField 和更改上传路径功能的模型
class Images(models.Model):
def upload_path(self, filename):
return os.path.join(settings.TOOLS_IMAGE_UPLOADS, self.get_artworkID(),
filename)
image = models.ImageField(upload_to=upload_path)
artworkID = models.IntegerField(null=True, blank=True)
def __str__(self):
if self.title == "" or not self.title:
return str(self.image)
return self.title
def get_artworkID(self):
if self.artworkID:
return str(self.artworkID)
return 'temp'
TOOLS_IMAGE_UPLOADS的值为
PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
BASE_DIR = os.path.dirname(PROJECT_DIR)
MEDIA_NAME_FOLDER = 'media'
MEDIA_ROOT = os.path.join(BASE_DIR, MEDIA_NAME_FOLDER)
TOOLS_IMAGE_UPLOADS = os.path.join(MEDIA_ROOT, 'uploads', 'images')
问题是通过 Django admin 或 rest api 可视化 Image 对象时返回的 URL 错误
返回的路径:
http://localhost:8000/media/webapp/artrights/media/uploads/images/temp/file.png
文件的真实路径:
http://localhost:8000/media/uploads/images/temp/file.png
我做错了什么或者我只需要创建一个自定义函数来返回正确的路径?
【问题讨论】:
标签: python django django-models