• Атрибут класса модели (по умолчанию objects), предоставляющий интерфейс для запросов к базе данных (Model.objects.all()).
  • Стандартный менеджер: models.Manager()
  • Пользовательские менеджеры: Позволяют добавить собственные методы для запросов или изменить стандартный QuerySet.
    # models.py
    class PublishedManager(models.Manager):
    	def get_queryset(self):
    		# Возвращает только опубликованные записи
    		return super().get_queryset().filter(is_published=True)
     
    	def get_by_natural_key(self, slug): # Пример своего метода
    		return self.get(slug=slug)
     
    class Post(models.Model):
    	title = models.CharField(max_length=200)
    	slug = models.SlugField(unique=True)
    	is_published = models.BooleanField(default=False)
    	# ... другие поля ...
     
    	objects = models.Manager() # Оставляем стандартный менеджер
    	published = PublishedManager() # Добавляем пользовательский
     
    # Использование:
    all_posts = Post.objects.all()
    published_posts = Post.published.all() 
    specific_post = Post.published.get_by_natural_key('my-post-slug')
    • Если создается пользовательский менеджер, стандартный objects перестает быть доступным автоматически, его нужно объявить явно, если он нужен.

〰〰〰 𓆝 𓆟 𓆞 𓆝 𓆟 𓆝 𓆟 𓆞 〰〰〰