Я смоделировал несколько нестраничных элементов как подклассы в трясогузке и искал класс Page
как хороший пример того, чего я хотел бы достичь, но у меня есть две проблемы с реализацией:
- Я хотел бы иметь возможность иметь
IndexView
в администраторе, который показывает список элементов, а затем позволить пользователю нажимать Add Item
, как они делают Add Page
вРедактор страницы и выберите подпункт при создании. - Я хотел бы использовать
InlinePanel
и, таким образом, использую отношение ParentalKey
, но makemigrations
дросселирует при создании миграций для этого изменения..
В models.py
:
@register_snippet
class Foo(ClusterableModel):
title = models.CharField(max_length=100, blank=True, null=True)
def name(self):
return self.title
class Meta:
abstract = True
class Bar(Foo):
description = models.CharField(max_length=100, blank=True, null=True)
class Baz(Foo):
pass
class Foofriends(Orderable):
name = models.CharField(max_length=10, blank=True, null=True)
friends = ParentalKey('appname.Foo', on_delete=models.CASCADE, related_name='foo_friends')
, а затем в wagtail_hooks.py
:
class FooAdmin(ModelAdmin):
model = Foo
menu_icon = 'date'
add_to_settings_menu = False # or True to add your model to the Settings sub-menu
exclude_from_explorer = False # or True to exclude pages of this type from Wagtail's explorer view
list_display = ('title',)
search_fields = ('title',)
modeladmin_register(FooAdmin)
Администратор не 'Это не работает - ничего не отображается в них modeladmin, и когда я пытаюсь редактировать из раздела администрирования фрагментов, я получаю 404.
Когда я пытаюсь создать миграцию ParentalKey
для отношения Foofriends
появляется следующая ошибка:
appname.Foofriends.friends: (fields.E300) Поле определяет отношение с моделью appname.Foo, которая либо не установлена, либо является абстрактной.appname.Foofriends.friends: (fields.E307) Поле appname.Foofriends.friends было объявлено с ленивой ссылкой на 'appname.foo', но приложение 'appname' не предоставляет модель 'foo'.
Обходным решением для первой проблемы может быть просто регистрация администраторов индивидуально для всех определенных классов, что немного не идеально, но выполнимо, но это не решит вторую проблему.
Возможно ли это вообще?Есть ли лучший подход?