【发布时间】:2015-10-10 19:31:50
【问题描述】:
我为 Django CMS 项目构建了一个 custom plugin,我将其命名为 PageBlockPlugin。关联的PageBlock 模型具有一个HTML 字段,我在模型上定义了一个__str__ 方法,它将HTML 内容截断为前三个单词。当我在这个模型的 Django 管理视图中时,我看到了我放置在我的一个模板中的实例列表:
这看起来很棒!但是,当我在同一模板的前端编辑器中并切换到“结构”视图时,我看到的只是一个实例 ID 列表:
我查看了许多插件示例,但无法弄清楚如何将模型的字符串表示形式用于其关联的插件。有什么想法吗?
这是我目前定义的精简版:
models.py
class PageBlock(CMSPlugin):
content = HTMLField()
def __str__(self):
return Truncator(strip_tags(self.content)).words(3, truncate="...")
cms_plugins.py
class PageBlockPlugin(CMSPluginBase):
model = models.PageBlock
name = "Page Block"
render_template = "some_template.html"
def render(self, context, instance, placeholder):
context["instance"] = instance
return context
plugin_pool.register_plugin(PageBlockPlugin)
admin.py
class PageBlockAdmin(FrontendEditableAdminMixin, admin.ModelAdmin):
pass
admin.site.register(models.PageBlock, PageBlockAdmin)
【问题讨论】:
-
您使用的是哪个版本的 Python、Django 和 Django-CMS?
-
Python 2.7、Django 1.7 和 Django CMS 3.1.3
标签: python django-cms