Менеджер objects
Менеджер objects - это атрибут каждой модели Django, который предоставляет доступ к методам для выполнения запросов к базе данных. Через менеджер выполняются операции создания, чтения, обновления и удаления записей. По умолчанию каждая модель получает стандартный менеджер objects, но его можно переопределить или создать собственные кастомные менеджеры для специфических задач.
Синтаксис
Model.objects.method_name(*args, **kwargs)
Пример
Создадим простую модель для работы со статьями:
from 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:
from myapp.models import Article
all_articles = Article.objects.all()
for article in all_articles:
print(f"{article.title}: {article.status}")
Результат выполнения кода:
"Django Basics: published"
"Advanced ORM: draft"
"REST API Guide: published"
Пример
Создание новой записи с помощью метода create менеджера:
from 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}")
Результат выполнения кода:
"Created article: Working with Django Managers"
Пример
Фильтрация записей через objects с использованием оператора поиска:
from myapp.models import Article
published_articles = Article.objects.filter(status="published")
for article in published_articles:
print(f"Title: {article.title}, Views: {article.views}")
Результат выполнения кода:
"Title: Django Basics, Views: 150"
"Title: REST API Guide, Views: 89"
Пример
Получение количества записей с помощью метода count менеджера:
from 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}")
Результат выполнения кода:
"Total articles: 3"
"Published articles: 2"
Пример
Получение первой записи из QuerySet с помощью метода first:
from 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")
Результат выполнения кода:
"First published article: Django Basics"