Inne zaawansowane operacje na modelach: 202:

202. Jak zarejestrować Custom QuerySet w Django?
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.