首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FeinCMS管理内联

FeinCMS管理内联
EN

Stack Overflow用户
提问于 2011-03-26 19:30:58
回答 1查看 801关注 0票数 3

我是FeinCMS新手,我正在尝试创建自己的内容类型。它使用我创建的另一个自定义内容类型。

在下面的代码中,"CollapsiblePanel“没有显示在管理中,因为我只希望您能够从ContentBox部分创建"CollapsiblePanels”。

您还可以为每个CollapsiblePanels创建多个ContentBox。我很难弄清楚如何将这些连接在一起,所以管理员允许您在ContentBox中添加ContentBox

代码语言:javascript
复制
class CollapsiblePanel(models.Model):
   title = models.CharField(max_length=255)
   content = models.TextField()

   def render(self, **kwargs):
       return render_to_string('collapsiblepanel.django.html', {
           'media': self,
           'title': mark_safe(self.title),
           'text': mark_safe(self.content),
       })

class ContentBoxMedia(RichTextContent):
   title = models.CharField(_('title'), max_length=200, blank=True)
   collapsible = models.BooleanField()
   collapsiblePanels = models.ForeignKey(CollapsiblePanel)

   class Meta:
       abstract = True
       verbose_name = 'Content Box'
       verbose_name_plural = 'Content Box'

   def render(self, **kwargs):
       return render_to_string('contentbox.django.html', {
           'media': self,
           'title': mark_safe(self.title),
           'text': mark_safe(self.text),
       })
EN

回答 1

Stack Overflow用户

发布于 2011-03-26 20:35:04

如果您应该能够在每个CollapsiblePanel中设置多个ContentBoxMedia,那么您的关系就会被错误地设置-- ForeignKey应该在CollapsiblePanel中。

然而,似乎您想要的是自动处理您的CollapsiblePanel“内联”?这是行不通的,因为FeinCMS将所有内容类型作为内联处理(因此ContentBoxMedia对象已经作为父对象的内联处理),而Django不支持 inlines

我怀疑提供这种功能的任何黑客都会非常复杂;您可以尝试在ContentBoxMedia模板中呈现您自己的表单集,但是您需要破解ItemEditor.change_view方法来处理数据,这将不容易操作。或者,您可以通过采用Ajax方法来避免这种情况,但这只能在保存的ContentBoxMedia对象中工作,而不是在新对象中工作。

或者,您可以尝试直接向admin注册ContentBoxMedia,以便您可以使用CollapsiblePanel内联,但这需要保留主FeinCMS父管理页面来单独编辑这些内容。如果您想探究这一点,您将需要使用Base.content_type_for并将结果模型注册到您的AdminSite (当然,还需要显式地注册一个内联)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5444763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档