Менеджер objects

Менеджер objects - это атрибут каждой модели Django, который предоставляет доступ к методам для выполнения запросов к базе данных. Через менеджер выполняются операции создания, чтения, обновления и удаления записей. По умолчанию каждая модель получает стандартный менеджер objects, но его можно переопределить или создать собственные кастомные менеджеры для специфических задач.

Синтаксис

pythonModel.objects.method_name(*args, **kwargs)

Пример

Создадим простую модель для работы со статьями:

pythonfrom django.db import models

class Article(models.Model):
  title = models.CharField(max_length=200)
  content = models.TextField()
  status = models.CharField(max_length=20)
  created_at = models.DateTimeField(auto_now_add=True)
  views = models.IntegerField(default=0)

  def __str__(self):
    return self.title

Пример

Получение всех записей из базы данных через менеджер objects:

pythonfrom myapp.models import Article

all_articles = Article.objects.all()
for article in all_articles:
  print(f"{article.title}: {article.status}")

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

python"Django Basics: published"
"Advanced ORM: draft"
"REST API Guide: published"

Пример

Создание новой записи с помощью метода create менеджера:

pythonfrom myapp.models import Article

new_article = Article.objects.create(
  title="Working with Django Managers",
  content="This article covers manager methods",
  status="published"
)
print(f"Created article: {new_article.title}")

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

python"Created article: Working with Django Managers"

Пример

Фильтрация записей через objects с использованием оператора поиска:

pythonfrom myapp.models import Article

published_articles = Article.objects.filter(status="published")
for article in published_articles:
  print(f"Title: {article.title}, Views: {article.views}")

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

python"Title: Django Basics, Views: 150"
"Title: REST API Guide, Views: 89"

Пример

Получение количества записей с помощью метода count менеджера:

pythonfrom myapp.models import Article

total_count = Article.objects.count()
published_count = Article.objects.filter(status="published").count()

print(f"Total articles: {total_count}")
print(f"Published articles: {published_count}")

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

python"Total articles: 3"
"Published articles: 2"

Пример

Получение первой записи из QuerySet с помощью метода first:

pythonfrom myapp.models import Article

first_article = Article.objects.filter(status="published").first()
if first_article:
  print(f"First published article: {first_article.title}")
else:
  print("No published articles found")

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

python"First published article: Django Basics"

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

  • класс Manager,
    который используется для создания кастомных менеджеров
  • метод filter,
    который фильтрует QuerySet по заданным условиям
  • метод create,
    который создает и сохраняет новый объект в базе данных
  • метод all,
    который возвращает все записи из таблицы