如何将文件的文件名上传到ima​​gefield?

时间:2017-01-24 03:43:56

标签: django python-3.x templates models imagefield

我需要在模板中过去在实例imagefield中上传的文件的文件名。

我的课程:

def conference_directory_path(instance, filename):
    return 'dialogues/conferences/conference_{0}/avatar/{1}'.format(instance.id, filename)

class Dialogue(models.Model):
    ...
    avatar = models.ImageField(upload_to=conference_directory_path, blank=True)
    ...

模板:

<img src="/static/dialogues/conferences/conference_{{ dialogue.id }}/avatar/{{ dialogue.avatar.filename }}" alt="">

但是render.avatar.filename在渲染后是空字符串。怎么了?对话是对话模型的一个实例。

1 个答案:

答案 0 :(得分:0)

数据库中存储的内容实际上是文件名而不是数据。如何访问它在这里描述:

https://docs.djangoproject.com/en/1.10/ref/models/fields/#filefield

  

将存储在数据库中的所有内容都是文件的路径   (相对于MEDIA_ROOT)。你很可能想要使用   Django提供的便捷网址属性。例如,如果你的   ImageField被称为mug_shot,你可以获得你的绝对路径   使用{{object.mug_shot.url}}的模板中的图像。

所以我们有

<img src="{{ dialogue.avatar.url }}" alt="">