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

Атрибут model класса StackedInline

Атрибут model класса StackedInline указывает, какая модель будет использоваться для отображения связанных записей на странице редактирования родительской модели в административной панели Django. Этот атрибут является обязательным и должен быть установлен в подклассе StackedInline. Он определяет, записи какой модели будут отображаться в виде вертикального стека полей внутри формы редактирования основной модели.

Синтаксис

from django.contrib import admin from .models import ParentModel, ChildModel class ChildModelInline(admin.StackedInline): model = ChildModel

Пример

Рассмотрим пример использования атрибута model в классе StackedInline для связи моделей Category и Article. Для начала определим модели:

from django.db import models class Category(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.name class Article(models.Model): title = models.CharField(max_length=200) category = models.ForeignKey(Category, on_delete=models.CASCADE) published = models.BooleanField(default=False) def __str__(self): return self.title

Теперь создадим класс StackedInline с указанием атрибута model для модели Article, чтобы можно было редактировать статьи прямо на странице категории:

from django.contrib import admin from .models import Category, Article class ArticleInline(admin.StackedInline): model = Article extra = 1 @admin.register(Category) class CategoryAdmin(admin.ModelAdmin): inlines = [ArticleInline]

После регистрации администратора для модели Category на странице редактирования категории появится вложенная форма для добавления и изменения статей. Все поля модели Article будут отображаться в виде вертикального стека, что удобно для форм с большим количеством полей.

Пример

В этом примере настроим отображение только определенных полей модели в инлайн-форме, используя атрибут fields вместе с model:

from django.contrib import admin from .models import Author, Book class BookInline(admin.StackedInline): model = Book fields = ('title', 'year', 'is_published') extra = 2 @admin.register(Author) class AuthorAdmin(admin.ModelAdmin): inlines = [BookInline]

Здесь мы ограничили отображение полей модели Book только тремя полями: title, year и is_published. Атрибут extra задает количество дополнительных пустых форм для добавления новых записей. На странице редактирования автора будут отображаться книги, связанные с ним, и поля будут расположены в виде вертикального стека.

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

  • класс TabularInline,
    который отображает связанные записи в табличной форме
  • атрибут model класса TabularInline,
    который также определяет модель для инлайн-отображения
  • атрибут extra,
    который задает количество дополнительных пустых форм
  • атрибут inlines класса ModelAdmin,
    который подключает инлайн-классы к админке
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить