Атрибут ordering
Атрибут ordering применяется к классу ModelAdmin и определяет
порядок сортировки записей при их отображении в списке административной
панели. Этот атрибут принимает список или кортеж строк, где каждая строка -
это имя поля модели, по которому выполняется сортировка.
Синтаксис
from django.contrib import admin
from myapp.models import Article
class ArticleAdmin(admin.ModelAdmin):
ordering = ['-created_at']
Пример
Давайте настроим сортировку статей по дате создания в порядке убывания:
from django.contrib import admin
from .models import Article
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
list_display = ['title', 'created_at', 'status']
ordering = ['-created_at'] # Сортировка по убыванию даты
Результат выполнения кода:
"Статьи отображаются в админке: сначала новые, потом старые"
Пример
Сортировка по нескольким полям, например, сначала по статусу, затем по дате:
from django.contrib import admin
from .models import Article
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
list_display = ['title', 'status', 'created_at']
ordering = ['status', '-created_at'] # Сначала по статусу, затем по дате
Результат выполнения кода:
"Сначала статьи со статусом 'draft', затем 'published', внутри каждой группы по дате убывания"
Пример
Использование атрибута с моделями, связанными через внешний ключ:
from django.contrib import admin
from .models import Article, Category
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
list_display = ['title', 'category', 'created_at']
ordering = ['category__name', '-created_at'] # Сортировка по имени категории
Результат выполнения кода:
"Статьи сортируются по имени категории (от A до Z), затем по дате создания"
Смотрите также
-
атрибут
list_display,
который определяет поля для отображения в списке -
атрибут
list_filter,
который добавляет фильтры в боковую панель -
атрибут
search_fields,
который добавляет поиск по полям модели -
атрибут
list_per_page,
который задаёт количество записей на страницу