Djangos only() Methode gibt an welche Felder sofort geladen werden sollen, wobei alle anderen als deferred Fields verzögert geladen werden und bei Zugriff bei Bedarf abgerufen werden. Die defer() Methode gibt Felder an die von der initialen Query ausgeschlossen werden, nützlich für große Textfelder oder JSON-Felder die selten sofort benötigt werden. Das Kombinieren mit select_related() für Foreign Keys und Sortierung mit Slicing optimiert sowohl die Query-Struktur als auch die Ergebnisgröße. values_list() mit flat=True gibt einfache Python-Werte statt Model-Instanzen zurück für maximale Performance wenn Sie keine vollständigen Objekte benötigen.
from django.db import modelsclass Article(models.Model):title = models.CharField(max_length=200)content = models.TextField()summary = models.TextField()author = models.ForeignKey('Author', on_delete=models.CASCADE)created_at = models.DateTimeField(auto_now_add=True)updated_at = models.DateTimeField(auto_now=True)metadata = models.JSONField(default=dict)# Fetch only required fields - reduces memory and query timetitles_and_dates = Article.objects.only('title', 'created_at').filter(author__name__icontains='python')# Defer heavy fields that are rarely accessed immediatelyarticles_with_deferred_content = Article.objects.defer('content', 'metadata').select_related('author').all()# Combine with ordering and slicingrecent_titles = Article.objects.only('title', 'created_at').order_by('-created_at')[:10]# Chain with values() for dictionaries instead of model instancesauthor_names = Article.objects.values_list('author__name', flat=True).distinct()[:5]