Является ли Wagtail InlinePanel совместимым без модели страницы? - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть нестраничная модель трясогузки, для которой я хотел бы использовать 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')

Но, к сожалению, встроенная панельне рендерится в интерфейсе администратора трясогузки.

С первого взгляда на код кажется, что для InlinePanel требуется объект / редактор Page, поэтому я решил спросить здесь, есть ли способиспользуйте InlinePanel для объекта, не являющегося страницей, или, если есть лучший способ добиться встроенного редактирования объектов (например, StackedInline в django) в администраторе трясогузки для объектов, не являющихся страницами.

1 Ответ

0 голосов
/ 28 ноября 2018

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'),
    ]
...