gpt4 book ai didi

django - FeinCMS 管理员内联

转载 作者:行者123 更新时间:2023-12-04 06:07:47 25 4
gpt4 key购买 nike

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

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

您还可以为每个 ContentBox 创建多个 CollapsiblePanel。我无法弄清楚如何将它们连接在一起,因此管理员允许您在 ContentBox 中添加 CollapsiblePanel

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),
})

最佳答案

如果每个 ContentBoxMedia 应该能够有多个 CollapsiblePanel,则您的关系设置错误 - ForeignKey应该在 CollapsiblePanel 中。

但是,您所追求的似乎是自动处理您的 CollapsiblePanel“内联”?这不会开箱即用,因为 FeinCMS 将所有内容类型处理为内联本身(因此 ContentBoxMedia 对象已经作为父对象的内联处理),并且 Django 不支持 nested inlines .

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

或者,您可以尝试直接向管理员注册 ContentBoxMedia,以便您可以使用 CollapsiblePanel 内联,但这需要离开主要的 FeinCMS 父级管理页面来单独编辑它们.如果你想探索这个,你需要使用 Base.content_type_for并使用您的 AdminSite 注册生成的模型(当然还要明确注册一个内联模型)。

关于django - FeinCMS 管理员内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5444763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com