Добавить заголовок столбца (и соответствующее свойство) в представление индекса трясогузки

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

Добавить заголовок столбца (и соответствующее свойство) в представление индекса трясогузки

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
515
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете сделать это с помощью МодельАдминистратор для конкретной модели, но она не будет отображаться в представлении Проводника страниц, как показано на снимке экрана. Вместо этого он появится в новом пункте меню на левой боковой панели. Я также считаю, что Хуки — отличное место для хранения этой логики. Просто помните, чем МодельАдминистратор отличается от модельadmin. В Пекарня Демо есть несколько хороших примеров того, как все это работает.

Престон, это хорошая информация. На самом деле у меня есть рабочая реализация с использованием ModelAdmin. Мне нравится, что он отображается в левой навигационной панели, но отображение списка не такое насыщенное, как в стандартном списке. Спасибо!

commadelimited 13.06.2019 21:12
Ответ принят как подходящий

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

  1. У нас есть приложение django под названием wagtail_patches, которое указано в наших INSTALLED_APPS перед приложениями трясогузки.
  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.

Интересный подход. Престон упомянул подход ModelAdmin, и мы заработали, но это не совсем то, на что мы надеялись. Тем не менее, подход с патчем для обезьян — умная идея, и я не против. Спасибо за предложение!

commadelimited 13.06.2019 21:19

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

cnk 14.06.2019 23:40

Другие вопросы по теме