wagtail - Wagtail 的 InlinePanel 是否与非页面模型兼容?
问题描述
我有一个 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
需要一个 Page 对象/编辑器,所以我想我会在这里问是否有办法InlinePanel
在非 Page 对象上使用 an,或者是否有更好的方法来实现StackedInline
在 wagtail 管理员中对非页面对象进行内联编辑(如 django 的)。
解决方案
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'),
]
推荐阅读
- firebase - Firestore 快照侦听器 - fromCache 值不一致
- python - 从具有 2 个公共键的字典列表中构建新字典的最有效方法?
- asp.net-core - Web Api 中是否可以使用 DuplicatePropertyNameHandling?
- r - 一次合并两个以上的数据帧
- linux - 如何使用 awk 打印除特定字段之外的所有字段?
- php - 在php中确定类子类型
- mysql - 2表连接需要MySql查询优化帮助
- css - 如何为 SVG 的某些部分设置动画
- ruby-on-rails - 回形针仅在生产一段时间后显示丢失的文件
- angular-material - 如何在 mat-datepicker 上仅选择年份