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

Атрибут search_fields

Атрибут search_fields применяется к классу административной модели и представляет собой список имен полей модели. По этим полям Django автоматически создает поле поиска в интерфейсе администратора. Когда администратор вводит текст в поле поиска, Django выполняет поиск по указанным полям с использованием оператора icontains. Для полей с отношениями можно использовать синтаксис с двойным подчеркиванием.

Синтаксис

class ModelAdmin(admin.ModelAdmin): search_fields = ['field_name', 'other_field']

Пример . С одной моделью

Создадим модель Article и зарегистрируем её в админке с атрибутом search_fields:

from django.db import models class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title
from django.contrib import admin from .models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): search_fields = ['title', 'content']

Теперь в админке появится поле поиска. При вводе текста поиск будет выполняться по полям 'title' и 'content'.

Пример . С ForeignKey

Добавим модель Author с отношением ForeignKey и настроим поиск по связанным полям:

from django.db import models class Author(models.Model): name = models.CharField(max_length=50) email = models.EmailField() def __str__(self): return self.name class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() author = models.ForeignKey(Author, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title
from django.contrib import admin from .models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): search_fields = ['title', 'content', 'author__name', 'author__email']

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

Пример . С несколькими моделями

Создадим несколько связанных моделей и настроим поиск по всем важным полям:

from django.db import models class Category(models.Model): name = models.CharField(max_length=50) slug = models.SlugField() def __str__(self): return self.name class Author(models.Model): name = models.CharField(max_length=50) email = models.EmailField() def __str__(self): return self.name class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() author = models.ForeignKey(Author, on_delete=models.CASCADE) categories = models.ManyToManyField(Category) created_at = models.DateTimeField(auto_now_add=True) is_published = models.BooleanField(default=False) def __str__(self): return self.title
from django.contrib import admin from .models import Article, Author, Category @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): search_fields = [ 'title', 'content', 'author__name', 'author__email', 'categories__name' ]

Теперь поиск по статьям охватывает все основные поля, включая имя автора, его email и названия категорий.

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

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