Odpowiedź,:
- Querysety w Django to obiekty reprezentujące zapytania do bazy danych wykonywane przy użyciu Django ORM (Object-Relational Mapping). Pozwala on na tworzenie, modyfikowanie i wyciąganie danych z bazy danych w sposób bardziej zbliżony do pracy z obiektami, a nie bezpośrednio w SQL.
- Querysety są leniwe (nie wykonują zapytania, dopóki nie są wykorzystywane) i mogą być łańcuchowane, co pozwala na elastyczne tworzenie zapytań.
- Jak tworzymy Queryset?
# Pobiera wszystkie obiekty modelu
queryset = MyModel.objects.all()
# Pobiera obiekty, które spełniają określone warunki
queryset = MyModel.objects.filter(status='active')
# Pobiera jeden obiekt, który spełnia warunki
queryset = MyModel.objects.get(id=1)
# Pobiera tylko określone pola
queryset = MyModel.objects.values('name', 'status')
# Pobiera obiekty posortowane według określonego pola
queryset = MyModel.objects.order_by('created_at')
# Lazy loading (leniwe ładowanie):
# Querysety są leniwe — oznacza to, że zapytanie do bazy danych nie zostanie wykonane, dopóki nie zostanie faktycznie potrzebne.
queryset = MyModel.objects.filter(status='active')
# Queryset nie wykonuje zapytania, dopóki nie wezwiesz np. list(queryset)
list(queryset) # Teraz zapytanie jest wykonane
# Łańcuchowanie zapytań
# Optymalizacja: select_related i prefetch_related
# Paginacja i Slicing
# Klasa bazowa dla Queryset obiektów w Django to django.db.models.query.QuerySet.