【问题标题】:Django cms accessing extended propertyDjango cms 访问扩展属性
【发布时间】:2013-05-26 19:44:55
【问题描述】:

我已将 Django cms Page 模型扩展为 ExtendedPage 模型,并在其中添加了 page_image。 我现在如何访问模板中的 page_image 属性。

我想访问导航菜单中每个子对象的 page_image 属性...创建一个带有图像的菜单...

我已经扩展了管理员并且我有可以编辑的字段(添加图片)

from django.db import models
from django.utils.translation import ugettext_lazy as _
from cms.models.pagemodel import Page
from django.conf import settings

class ExtendedPage(models.Model):   
    page = models.OneToOneField(Page, unique=True, verbose_name=_("Page"), editable=False, related_name='extended_fields')
    page_image = models.ImageField(upload_to=settings.MEDIA_ROOT, verbose_name=_("Page image"), blank=True)

谢谢!

BR

【问题讨论】:

    标签: django django-cms


    【解决方案1】:
    request.current_page.extended_fields.page_image
    

    如果您使用的是

    request.current_page.publisher_draft.extended_fields.page_image
    

    我通常会编写一些中间件或模板处理器来处理此问题,而不是在模板中重复执行此操作。类似的东西:

    class PageOptions(object):
        def process_request(self, request):
            request.options = dict()
            if not request.options and request.current_page:
                extended_fields = None
                try:
                    extended_fields = request.current_page.extended_fields
                except:
                    try:
                        custom_settings = request.current_page.publisher_draft.extended_fields
                    except:
                        pass
                if extended_fields:
                    for field in extended_fields._meta.fields:
                        request.options[field.name] = getattr(extended_fields, field.name)
            return None
    

    将允许您简单地做{{ request.options.page_image }}

    【讨论】:

    • 嗨,您的解决方案适用于当前页面...我主要要求菜单...如果我使用 child.publisher_draft.extended_fields.page_image 它不起作用...所以我需要这个用于所有菜单项。模板标签是唯一的选择吗?
    • @Mission 好问题。我有同样的问题!你是怎么解决的?例如。我需要添加 menu_icon 字段(完成),现在我必须在 show_menu 中加载它。谢谢!
    • 现在有点晚了,但它是内置在 Django CMS Beta 3 中的。认为通过谷歌找到这个问题的用户可能仍然感兴趣:stackoverflow.com/a/21849360/870769
    猜你喜欢
    • 2015-07-23
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 2016-12-06
    • 2017-12-09
    • 1970-01-01
    相关资源
    最近更新 更多