我已将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
答案 0 :(得分:3)
request.current_page.extended_fields.page_image
如果您使用< 应该可以工作2.4。在2.4中,他们引入了一个新的两页系统(已发布/草稿),因此您可能需要
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 }}