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

Posted

技术标签:

【中文标题】如何从models.py中的settings.py引用MEDIA_URL?【英文标题】:How to refer to MEDIA_URL from settings.py in models.py? 【发布时间】:2014-03-12 21:29:02 【问题描述】:

我知道在模型中对视图进行部分处理可能不是最美妙的事情,但现在我想以这种方式解决我的问题。

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

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

但我希望使用 MEDIA_URL 而不是硬编码的 /media/ ,但不知道如何调用它。我是 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 中使用它。

【问题讨论】:

【参考方案1】:

好的。我想我明白了。无论如何cmets如何更好地处理它将会被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

【讨论】:

【参考方案2】:

仅在视图中附加媒体前缀。看看如何做到这一点:https://docs.djangoproject.com/en/1.6/ref/templates/builtins/#get-media-prefix

并参考模板中的obj.thumbnail.photo。

【讨论】:

以上是关于如何从models.py中的settings.py引用MEDIA_URL?的主要内容,如果未能解决你的问题,请参考以下文章

从数据库反向生成django项目中的models文件

Django详解之models操作

django使用models创建表

Django学习---Models(ORM框架)

Django blog - Django models 介绍

Django?模型(数据库)