Добавить заголовок столбца (и соответствующее свойство) в представление индекса Wagtail - PullRequest
0 голосов
/ 13 июня 2019

Мы с моей командой создали раздел, позволяющий нашей компании добавлять целевые страницы.Мы хотели бы включить несколько дополнительных столбцов в индексное представление связанной модели, как показано на этом рисунке.

Custom index view

Я нашелнесколько старых постов (2014-й), которые указывают, что это невозможно, но я не могу найти ничего более нового, что делает это утверждение недействительным.Возможно ли это сделать, и если да, то может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Если вы хотите пропатчить вид и шаблон для Page Explorer, вы сможете это сделать. Моя группа не исправляет Page Explorer, поэтому у меня нет примера кода для этого, но наш общий подход следующий:

  1. У нас есть приложение django под названием wagtail_patches, которое указано в нашем INSTALLED_APPS до приложений wagtail.
  2. В wagtail_patches / apps.py у нас есть:

    from django.apps import AppConfig
    
    class WagtailPatchesConfig(AppConfig):
        name = 'wagtail_patches'
        verbose_name = 'Wagtail Patches'
        ready_is_done = False
    
        def ready(self):
            """
            This function runs as soon as the app is loaded. It executes our monkey patches to various parts of Wagtail
            that change it to support our architecture of fully separated tenants.
            """
            # As suggested by the Django docs, we need to make absolutely certain that this code runs only once.
            if not self.ready_is_done:
                # The act of performing this import executes all the code in monkey_patches.
                from . import monkey_patches  
                # Unlike monkey_patches, the code of wagtail_hook_patches is in the function patch_hooks().
                from .wagtail_hook_patches import patch_hooks
                patch_hooks()
    
                self.ready_is_done = True
            else:
                print("{}.ready() executed more than once! This method's code is skipped on subsequent runs.".format(
                    self.__class__.__name__
                ))
    
  3. Затем в wagtail_patches / monkey_patches.py мы импортируем исправляемый модуль, затем напишем новый метод, а затем заменим стандартную версию новым методом. Например:

    from wagtail.admin.forms.collections import CollectionForm
    def collection_form_clean_name(self):
        if <weird custom condition>:
            raise ValidationError('some error message')
    CollectionForm.clean_name = collection_form_clean_name
    
  4. Переопределение шаблонов аналогично обычному переопределению шаблонов django, поместите настроенную версию какого-либо файла в иерархию папок, соответствующую ее обычной позиции в Wagtail.
1 голос
/ 13 июня 2019

Вы можете сделать это с помощью ModelAdmin для конкретной модели, но она не будет отображаться в представлении Pages Explorer, как на скриншоте. Вместо этого он появится в новом пункте меню на левой боковой панели. Я также считаю, что Hooks - отличное место для хранения этой логики. Просто знайте, чем ModelAdmin отличается от modeladmin . Bakery Demo содержит несколько хороших примеров того, как все это работает.

...