Уроки по программированию

Django пользовательские менеджеры

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()

Комментарии к статье

  • Оставьте первый комментарий - автор старался

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

Ваш адрес email не будет опубликован.