Django list_per_page для всех моделей в админке - PullRequest
0 голосов
/ 22 октября 2018

Добрый день!Я пытаюсь найти решение, чтобы добавить list_per_page в качестве глобального параметра для всех моделей в админке.Я обнаружил, что ModelAdmin имеет этот параметр через объект ChangeList и имеет значение по умолчанию 100. Но что если я захочу установить его 20, и это будет верно для всех моделей?Я имею в виду, если мне нужно изменить list_per_page для текущей модели в админке, мне нужно добавить:

class CurrentModelAdmin(models.ModelAdmin):
    list_per_page = 20
    ...

Есть ли способ переопределить объект ChangeList для перезаписи значения по умолчанию?Например, как LIST_PER_PAGE = 20 в файле settings.py

И даже лучше, как мне получить его из внешнего интерфейса и работать с ним динамически?

1 Ответ

0 голосов
/ 22 октября 2018

Да, вы определяете переменную в своих настройках, например:

# settings.py

# ...
LIST_PER_PAGE = 20

Изменить отдельные ModelAdmin классы

, тогда в ваших представлениях вы можете написать:

from django.conf import settings

class CurrentModelAdmin(models.ModelAdmin):
    list_per_page = settings.LIST_PER_PAGE

Определение базового класса с набором атрибутов list_per_page

Может быть неудобно писать это для для каждого ModelAdmin представления, так что вы можете, например, сначала создать подкласс, которыйустанавливает list_per_page, а затем подкласс этой модели:

from django.conf import settings

class <b>BaseModelAdmin</b>(models.ModelAdmin):
    list_per_page = settings.LIST_PER_PAGE

class CurrentModelAdmin(<b>BaseModelAdmin</b>):
    # ...
    pass

Так что теперь нам больше не нужно указывать атрибут list_per_page в каждом ModelAdmin, пока мы подкласс из BaseModelAdmin.

Monkey patch для ModelAdmin class

Вы также можете "monkey patch" атрибут list_per_page и, таким образом, обновлять значение только в ModelAdmin уровень:

# app/monkey_patching.py

from django.conf import settings

ModelAdmin.list_per_page = settings.LIST_PER_PAGE

и следуйте инструкциям , чтобы «активировать» исправление обезьян в Django .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...