РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
593 of 818 menu

Атрибут list_editable

Атрибут list_editable применяется к классу ModelAdmin и позволяет указать поля, которые можно редактировать непосредственно в списке объектов. Это удобно для быстрого изменения данных без перехода на страницу редактирования. Поля, перечисленные в этом атрибуте, отображаются в списке как редактируемые поля ввода.

Синтаксис

from django.contrib import admin from .models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'status', 'views') list_editable = ('status', 'views')

Атрибут list_editable принимает кортеж или список с именами полей, которые должны быть доступны для редактирования в списке объектов.

Важные особенности

При использовании list_editable необходимо учитывать несколько правил:

Поля, указанные в list_editable, должны присутствовать в list_display. Если поле указано в list_editable, но отсутствует в list_display, будет вызвана ошибка.

Первое поле в list_display автоматически становится ссылкой на страницу редактирования. Поэтому это поле не может быть редактируемым. Если вы хотите сделать его редактируемым, используйте атрибут list_display_links для управления ссылками.

Пример

Создадим модель Article и настроим админку так, чтобы в списке можно было редактировать поля status и views:

# models.py from django.db import models class Article(models.Model): title = models.CharField(max_length=100) status = models.CharField(max_length=20) views = models.IntegerField(default=0) def __str__(self): return self.title # admin.py from django.contrib import admin from .models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'status', 'views') list_editable = ('status', 'views')

Результат выполнения кода:

"В списке объектов появились выпадающий список для status и поле ввода для views"

Пример

Используем атрибут list_display_links для управления ссылками и сделаем поле title редактируемым:

# admin.py from django.contrib import admin from .models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'status', 'views', 'created_at') list_editable = ('title', 'status') list_display_links = ('created_at',)

Результат выполнения кода:

"Поля title и status стали редактируемыми, а ссылка на редактирование находится на поле created_at"

Пример

Поля, указанные в list_editable, автоматически проверяются на корректность. Если ввести неверные данные, административная панель покажет ошибку:

# admin.py from django.contrib import admin from .models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'status', 'views') list_editable = ('status', 'views')

Результат выполнения кода:

"При попытке ввести текст в поле views отобразится ошибка валидации"

Смотрите также

  • атрибут list_display,
    который определяет список полей, отображаемых в списке объектов
  • атрибут list_display_links,
    который управляет ссылками на страницу редактирования
  • атрибут list_filter,
    который добавляет боковую панель с фильтрами
  • атрибут search_fields,
    который добавляет поле для поиска по списку объектов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить