【问题标题】:How to refer to MEDIA_URL from settings.py in models.py?如何从models.py中的settings.py引用MEDIA_URL?
【发布时间】: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 中使用它。

【问题讨论】:

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


    【解决方案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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-13
        • 2011-11-11
        • 2011-12-13
        • 1970-01-01
        • 2016-08-11
        • 2012-01-30
        • 2011-07-01
        相关资源
        最近更新 更多