Django предоставляет возможно создавать пользовательские менеджеры, которые расширяют возможности базового менеджера. В следующем примере я создам пользовательский менеджер, который будет фильтровать посты и выдавать в конечном результате, все посты из категории news
from django.db import models
class CategoryManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(category_slug__icontains ='news')
class Post(models.Model):
title = models.CharField(max_length=200)
exerpt = models.CharField()
content = models.TextField()
category_slug = models.CharField()
pub_date = models.DateTimeField('date published')
objects = models.Manager() # Менеджер по умолчанию.
category = CategoryManager() # Наш новый менеджер.
После нам будет доступен менеджер category. Использовать его можно будет вот так:
# Результатом в переменной data будет все посты из category news data = Post.category.all()

Добавить комментарий