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

Атрибут exclude

Атрибут exclude применяется в классе ModelAdmin и позволяет указать список полей модели, которые не должны отображаться в форме редактирования или создания записи. В отличие от атрибута fields, где перечисляются поля для отображения, exclude работает наоборот: из формы удаляются все поля, перечисленные в этом атрибуте.

Синтаксис

from django.contrib import admin from .models import Article class ArticleAdmin(admin.ModelAdmin): exclude = ('field1', 'field2')

Пример

Рассмотрим модель Article с полями title, content, author, created_at и status. Исключим из формы поля created_at и status:

from django.db import models class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField() author = models.CharField(max_length=100) created_at = models.DateTimeField(auto_now_add=True) status = models.CharField(max_length=20, default='draft')
from django.contrib import admin from .models import Article class ArticleAdmin(admin.ModelAdmin): exclude = ('created_at', 'status') admin.site.register(Article, ArticleAdmin)

В результате форма редактирования статьи в административной панели будет содержать только поля title, content и author, а поля created_at и status не будут отображаться.

Пример

Используем атрибут exclude вместе с fieldsets. Определим группу полей и исключим поле slug из формы:

from django.db import models class Category(models.Model): name = models.CharField(max_length=100) slug = models.SlugField(unique=True) description = models.TextField(blank=True) is_active = models.BooleanField(default=True)
from django.contrib import admin from .models import Category class CategoryAdmin(admin.ModelAdmin): fieldsets = ( ('Основная информация', { 'fields': ('name', 'slug') }), ('Дополнительно', { 'fields': ('description', 'is_active') }), ) exclude = ('slug',) admin.site.register(Category, CategoryAdmin)

Теперь в форме редактирования категории поле slug будет исключено из всех групп, несмотря на то, что оно указано в fieldsets.

Пример

Исключим несколько полей сразу. Рассмотрим модель UserProfile с полями user, phone, address, birth_date и bio. Исключим поля user и birth_date:

from django.db import models from django.contrib.auth.models import User class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) phone = models.CharField(max_length=15, blank=True) address = models.TextField(blank=True) birth_date = models.DateField(null=True, blank=True) bio = models.TextField(blank=True)
from django.contrib import admin from .models import UserProfile class UserProfileAdmin(admin.ModelAdmin): exclude = ('user', 'birth_date') admin.site.register(UserProfile, UserProfileAdmin)

В форме редактирования профиля пользователя останутся только поля phone, address и bio. Поля user и birth_date будут скрыты.

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

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