如何在django-cms中的页面中添加一些额外的字段? (在django管理面板中) [英] How to add some extra fields to the page in django-cms? (in django admin panel)
问题描述
我想在django-cms中的页面中添加一些额外的字段(在django管理面板中)。最简单的做法如何?
I would like to add some extra fields to pages in django-cms (in django admin panel). How do this in the simplest way?
推荐答案
创建一个新的应用程序(称为 extended_cms
或某些东西) models.py
创建以下内容:
Create a new app (called extended_cms
or something) and in models.py
create the following:
from django.db import models
from django.utils.translation import ugettext_lazy as _
from cms.models.pagemodel import Page
class ExtendedPage(models.Model):
page = models.ForeignKey(Page, unique=True, verbose_name=_("Page"), editable=False, related_name='extended_fields')
my_extra_field = models.CharField(...)
然后创建一个 admin.py
:
from models import ExtendedPage
from cms.admin.pageadmin import PageAdmin
from cms.models.pagemodel import Page
from django.contrib import admin
class ExtendedPageAdmin(admin.StackedInline):
model = ExtendedPage
can_delete = False
PageAdmin.inlines.append(ExtendedPageAdmin)
try:
admin.site.unregister(Page)
except:
pass
admin.site.register(Page, PageAdmin)
这将添加您的扩展模型作为您创建的任何页面的内联。访问扩展模型设计的最简单的方法是创建一个上下文处理器:
which will add your extended model to as an inline to any page you create. The easiest way to access the extended model setttings, is to create a context processor:
from django.core.cache import cache
from django.contrib.sites.models import Site
from models import ExtendedPage
def extended_page_options(request):
cls = ExtendedPage
extended_page_options = None
try:
extended_page_options = request.current_page.extended_fields.all()[0]
except:
pass
return {
'extended_page_options' : extended_page_options,
}
现在,您可以访问您当前的额外选项在您的模板中使用 {{extended_page_options.my_extra_field}}
的页面
and now you have access to your extra options for the current page using {{ extended_page_options.my_extra_field }}
in your templates
本质上您正在做的是创建一个单独的模型使用用于每个CMS页面的内联的额外设置。我以前从博客中得到这个,如果我能发现我会发布。
Essentially what you are doing is creating a separate model with extra settings that is used as an inline for every CMS Page. I got this from a blog post previously so if I can find that I'll post it.
编辑
这是博客文章: http://ilian.ini.org/extending-django-cms-page-model/
这篇关于如何在django-cms中的页面中添加一些额外的字段? (在django管理面板中)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!