Wagtail CMS(Django) - Отображение полей встроенной модели в связанной модели
У меня есть две пользовательские модели (не наследующиеся от Page
), которые предназначены для администратора на сайте Wagtail CMS. Я могу заставить их работать в обычном Django, но в Wagtail я не могу заставить отображаться встроенные поля модели. Я получаю key error
. Код...
On model.py
:
from django.db import models
from wagtail.admin.panels import (
FieldPanel,
MultiFieldPanel,
FieldRowPanel,
InlinePanel,
)
from author.models import Author
class Book(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
date = models.DateField("Date released")
panels = [
MultiFieldPanel([
InlinePanel('book_review'),
], heading="Book reviews"),
]
class BookReview(models.Model):
book = models.ForeignKey(
Book, on_delete=models.CASCADE, related_name='book_review')
title = models.CharField(max_length=250)
content = models.TextField()
panels = [
FieldRowPanel([
FieldPanel('title'),
FieldPanel('content'),
])
]
и wagtail_hooks.py
:
from wagtail.contrib.modeladmin.options import (
ModelAdmin,
modeladmin_register,
)
from .models import Book, BookReview
class BookAdmin(ModelAdmin):
model = Book
add_to_settings_menu = False
add_to_admin_menu = True
inlines = [BookReview] # only added this after key error, but it didn't help
modeladmin_register(BookAdmin)
Как я могу заставить строку InlinePanel('book_review'),
отображаться в админке. Все работает, пока я не попробую добавить встроенные поля модели.
Я искал в интернете, и там упоминался сторонний пакет Django modelcluster
. Это все еще требуется? Те сообщения были довольно старыми (5 лет или около того). Или вместо ForeignKey
использовать ParentalKey
, но это только если наследоваться от Page
model.
Попробуйте изменить модель Book, чтобы она наследовалась от ClusterableModel (которая сама наследуется от models.Model)
from modelcluster.models import ClusterableModel
class Book(ClusterableModel):