Как ссылаться на 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 только в шаблоне.