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()
Добавить комментарий