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

Атрибут fields

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

Синтаксис

class YourModelAdmin(admin.ModelAdmin): fields = ('field1', 'field2', 'field3')

Пример

Рассмотрим базовое использование атрибута fields на примере модели Article. Определим, какие поля будут отображаться на форме редактирования:

from django.contrib import admin from .models import Article class ArticleAdmin(admin.ModelAdmin): fields = ('title', 'content', 'status', 'created_at')

В результате на странице добавления и редактирования статьи будут отображаться только указанные поля в заданном порядке. Поля, не включенные в список, не будут отображаться на форме.

Пример

Атрибут fields позволяет управлять порядком отображения полей. Например, переместим поле status в начало формы:

from django.contrib import admin from .models import Article class ArticleAdmin(admin.ModelAdmin): fields = ('status', 'title', 'content', 'created_at')

Теперь поле status будет отображаться первым на форме редактирования, что удобно, если это поле часто используется при работе с записями.

Пример

Атрибут fields также может включать поля, связанные через отношения, используя синтаксис с двойным подчеркиванием. Однако важно помнить, что для работы с такими полями необходимо определить их в readonly_fields или использовать методы. Рассмотрим пример:

from django.contrib import admin from .models import Article class ArticleAdmin(admin.ModelAdmin): fields = ('title', 'content', 'author__username') readonly_fields = ('author__username',) def get_author_username(self, obj): return obj.author.username get_author_username.short_description = 'Author Username'

В этом примере мы добавили на форму поле author__username, которое отображает имя пользователя автора. Для корректной работы это поле добавлено в readonly_fields.

Пример

Если необходимо скрыть поле из формы, достаточно не включать его в список fields. Например, скроем поле created_at:

from django.contrib import admin from .models import Article class ArticleAdmin(admin.ModelAdmin): fields = ('title', 'content', 'status')

В результате на форме редактирования не будет отображаться поле created_at, что полезно, если значение этого поля устанавливается автоматически и не требует редактирования администратором.

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

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