Трясогузка: изменить list_display для трясогузки
Я использую библиотеку wagtailmenus с некоторыми пользовательскими моделями, как описано здесь. Ничего особенного, просто добавляет языковое поле:
class TranslatableFlatMenu(AbstractFlatMenu):
language = models.CharField(choices=TRANSLATION_CHOICES, help_text='For what language the menu should be used', max_length=13)
content_panels = (
MultiFieldPanel(
heading=_("Menu Details"),
children=(
FieldPanel("title"),
FieldPanel("site"),
FieldPanel("handle"),
FieldPanel("heading"),
FieldPanel("language"),
)
),
FlatMenuItemsInlinePanel(),
)
class TranslatableFlatMenuItem(AbstractFlatMenuItem):
menu = ParentalKey(
TranslatableFlatMenu,
on_delete=models.CASCADE,
related_name=settings.FLAT_MENU_ITEMS_RELATED_NAME,
)
Это отлично работает, однако я хотел бы отобразить здесь поле:
Теперь для обычных моделей я могу использовать ModelAdmin и передать list_display
, но кажется, что трясогузки уже сами регистрируют меню. Можно ли еще поменятьlist_display
свойство каким-то образом, чтобы я мог отображать язык в списке?
1 ответ
Я не очень разбираюсь в трясогузках, но он думает, что WAGTAILMENUS_FLAT_MENUS_MODELADMIN_CLASS - это настройка, которую вы ищете.
Чтобы изменить поля в list_display
, вам придется создать подклассы трясогузки; FlatMenuAdmin
и отменить его get_list_display
функция:
class TranslatableFlatMenuAdmin(FlatMenuAdmin):
def get_list_display(self, request):
if self.is_multisite_listing(request):
return ('title', 'language', 'handle_formatted', 'site', 'items')
return ('title', 'language', 'handle_formatted', 'items')
затем в вашем settings.py добавьте что-то вроде:
WAGTAILMENUS_FLAT_MENUS_MODELADMIN_CLASS = "project.app.admin.TranslatableFlatMenuAdmin"