首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django ImageField.path在保存方法中不使用upload_to返回路径

Django ImageField.path在保存方法中不使用upload_to返回路径
EN

Stack Overflow用户
提问于 2018-03-09 03:49:07
回答 1查看 882关注 0票数 1

Django ImageField.path在保存方法中不使用upload_to返回路径:

代码语言:javascript
运行
复制
# models.py
class Message(models.Model):
image = models.ImageField(upload_to='mes-img', null=True, blank=True)

def image_tag(self):
    if self.image:
        # Printing "/base-dir/media/mes-img/image.png"
        print(self.image.path)
        # src=/media/mes-img/image.png
        return mark_safe('<img src="{0}" width="100" />'.format(self.image.url))

def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
    # Returns "/base-dir/media/image.png", should return "/base-dir/media/mes-img/image.png"
    print(self.image.path)
    # Returns "/media/image.png", should return "/media/mes-img/image.png"
    print(self.image.url)

操作系统: Windows 10 64位

Python 3.6.4

Django 2.0.2

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-09 04:18:50

upload_to传递给Storage.save()方法,检查文档的这一部分。因此,只有在保存图像之后,upload_to才会被添加到路径中。试着做这样的事情:

代码语言:javascript
运行
复制
 def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
    super().save(force_insert, force_update, using, update_fields)
    print(self.image.path)
    print(self.image.url)

super().save()将自动保存图像实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49186323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档