Django modele, Podstawy_013:


013. Queryset jest obiektem w ORM Django reprezentującym cały zestaw danych. Jakie są jego właciwości?

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.