如何从models.py中的settings.py引用MEDIA_URL?

时间:2014-02-13 19:31:17

标签: django django-models django-admin django-settings django-media

我知道在模特中观点可能并不是最美好的事情,但是现在我想以这种方式解决我的问题。

在我的models.py中为我定义的一个类:

def admin_image(self):
    return '<img src="/media/%s"/>' % self.thumbnail.photo
admin_image.allow_tags = True

但是我想这样而不是硬编码/媒体/将使用MEDIA_URL,但不知道如何调用它。我是django的新手,所以请善待:)

在我的settings.py中定义:

PROJECT_ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
MEDIA_ROOT = os.path.join(PROJECT_ROOT_PATH, 'media/')
MEDIA_URL = '/media/'

在admin.py中我使用readonly_fields = ['admin_image'],然后在list_display和fieldsets中使用它。

2 个答案:

答案 0 :(得分:1)

行。我想我明白了。无论如何评论如何更好地处理它将是apriciated。

在models.py中:

from django.conf import settings

def admin_image(self):
    return '<img src="'+settings.MEDIA_URL+'%s"/>' % self.thumbnail.photo
admin_image.allow_tags = True

答案 1 :(得分:0)

仅在视图中附加媒体前缀。了解如何执行此操作:https://docs.djangoproject.com/en/1.6/ref/templates/builtins/#get-media-prefix

请参阅模板中的obj.thumbnail.photo。