Niestandardowy QuerySet:
W ten sposób masz dostęp do własnych metod w BookQuerySet, takich jak published(), na obiekcie Book.objects, dzięki as_manager().
from django.db import models
class BookQuerySet(models.query.QuerySet):
def published(self):
return self.filter(publication_date__lte=datetime.today())
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=100)
publication_date = models.DateField()
objects = BookQuerySet.as_manager() # Rejestracja niestandardowego QuerySet
Kiedy warto pisać Custom QuerySet?
Wielokrotne używanie skomplikowanych zapytań:
Jeśli w różnych częściach aplikacji musisz wielokrotnie pisać podobne zapytania, np. filtrowanie według stanu, daty lub statusu.
Organizacja logiki biznesowej:
Zamiast umieszczać złożone zapytania w widokach czy serwisach, przenieś je do Custom QuerySet, aby były łatwiejsze w utrzymaniu.
Poprawa czytelności kodu:
Tworzenie dedykowanych metod pozwala pisać bardziej intuicyjny kod.
Dostosowanie zachowania wbudowanych metod:
Jeśli potrzebujesz zmodyfikować domyślne działanie .filter(), .all() lub innych metod.