Wagtail 的 InlinePanel 与非页面模型兼容吗?

Is Wagtail's InlinePanel Compatible w/ a Non Page Model?

我有一个 wagtail 非页面模型,我想使用 InlinePanel 以便我可以在父表单中内联编辑多个项目。

class Parent(ClusterableModel):
   panels = [...,
        InlinePanel('child_items')
   ]

class Child(Orderable):
   value = models...
   parent_value = ParentalKey('.Parent', on_delete=models.CASCADE, related_name='child_items')

但遗憾的是,wagtail 管理中未呈现内联面板 UI。

快速浏览一下代码,似乎 InlinePanel 需要一个页面 object/editor,所以我想在这里问一下是否有使用 [=11= 的方法] 在非页面对象上,或者是否有更好的方法在非页面对象的 wagtail 管理中实现对象的内联编辑(如 django 的 StackedInline)。

InlinePanel 如果非页面模型注册为代码片段或通过 ModelAdmin,则它们确实适用于非页面模型。您的代码的工作版本是(在新创建的 Wagtail 项目上测试,home/models.py 替换为以下代码):

from django.db import models
from modelcluster.fields import ParentalKey
from modelcluster.models import ClusterableModel

from wagtail.admin.edit_handlers import FieldPanel, InlinePanel
from wagtail.core.models import Page, Orderable
from wagtail.snippets.models import register_snippet

class HomePage(Page):
    pass


@register_snippet
class Parent(ClusterableModel):
    title = models.CharField(max_length=255)
    panels = [
        FieldPanel('title'),
        InlinePanel('child_items', label='Child items'),
    ]

class Child(Orderable):
    parent_value = ParentalKey(Parent, on_delete=models.CASCADE, related_name='child_items')
    value = models.CharField(max_length=255)

    panels = [
        FieldPanel('value'),
    ]