我刚接触feincms,正在尝试写一个扩展,我写了一个非常基本的扩展
from __future__ import absolute_import, unicode_literals
from django.db import models
from django.utils.translation import ugettext_lazy as _
from feincms import extensions
class Extension(extensions.Extension):
def handle_model(self):
self.model.add_to_class('excerpt', models.TextField(
_('excerpt'),
blank=True,
help_text=_('Excerpts are good!')))
def handle_modeladmin(self, modeladmin):
modeladmin.add_extension_options(_('Exceprt'), {
'fields': ('excerpt',),
'classes': ('collapse',),
})来添加一个文本字段摘录,但现在我想写一个更复杂的。我想要允许一个单一的特色图像添加到页面使用类似于为一个地区选择媒体的过程,但我没有任何线索如何去做。任何关于这个扩展的指导都将不胜感激!
谢谢!
发布于 2014-08-09 03:13:53
不确定我是否正确理解了您的问题,但这可能会有所帮助:https://github.com/matthiask/feincms-in-a-box/blob/master/box/cms/models.py#L57 --只需添加一个MediaFileForeignKey,并将新字段添加到raw_id_fields。这应该就是全部。
示例代码如下:
from __future__ import absolute_import, unicode_literals
from django.db import models
from django.utils.translation import ugettext_lazy as _
from feincms.module.page.models import Page
from feincms.extensions import Extension
from feincms.module.medialibrary.fields import MediaFileForeignKey
from feincms.module.medialibrary.models import MediaFile
class ExcerptExtension(Extension):
def handle_model(self):
self.model.add_to_class(
'excerpt_image',
MediaFileForeignKey(
MediaFile, verbose_name=_('image'),
blank=True, null=True, related_name='+'))
self.model.add_to_class(
'excerpt_text',
models.TextField(_('text'), blank=True))
def handle_modeladmin(self, modeladmin):
modeladmin.raw_id_fields.append('excerpt_image')
modeladmin.add_extension_options(_('Excerpt'), {
'fields': ('excerpt_image', 'excerpt_text'),
})
Page.register_extensions(
ExcerptExtension,
)注意:此代码需要最新版本的FeinCMS才能按原样工作。更准确地说,只有1.9和更高版本支持直接将扩展类(而不是虚线Python路径)传递给Page.register_extensions。
https://stackoverflow.com/questions/23693157
复制相似问题