Как ссылаться на MEDIA_URL из settings.py в models.py?

Я знаю, что, возможно, это не самая красивая вещь, чтобы частично разобраться в представлении модели, но сейчас я бы хотел решить свою проблему таким образом.

в моем models.py для одного класса я определяю:

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

НО я хотел бы, чтобы вместо жестко закодированного /media/ там использовался MEDIA_URL, но я не знаю, как его назвать. Я новичок в Джанго, так что будьте добры:)

в моем 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 ответа

Решение

ХОРОШО. Я думаю, что понял. В любом случае комментарии, как лучше с этим справляться, будут сокращены.

в 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

Добавляйте префикс медиа только в представлении. Посмотрите, как это сделать: https://docs.djangoproject.com/en/1.6/ref/templates/builtins/

И обратитесь к obj.thumbnail.photo только в шаблоне.

Другие вопросы по тегам