Das Filtern von Daten in Django ist ein Prozess, bei dem Sie eine spezielle Abfrage an Ihre Datenbank senden, um bestimmte Datensätze zu finden. Django bietet eine Reihe von Tools und Funktionen, um diesen Vorgang zu erleichtern.
Eine Möglichkeit, Daten zu filtern, besteht darin, die `filter()` Methode zu verwenden, die von Django’s QuerySet API zur Verfügung gestellt wird. Sie können diese Methode verwenden, um eine Reihe von Bedingungen anzugeben, die erfüllt sein müssen, um in die Ergebnisse aufgenommen zu werden.
Zum Beispiel, wenn Sie eine Tabelle mit Benutzerdaten haben und alle Benutzer finden möchten, die in einer bestimmten Stadt leben, würden Sie so etwas tun:
```
User.objects.filter(city=“Berlin”)
```
In diesem Beispiel würde Django alle Datensätze in der Benutzertabelle finden, bei denen das Feld “city” den Wert “Berlin” hat.
Sie können auch mehrere Bedingungen angeben, indem Sie zusätzliche Argumente an die `filter()` Methode übergeben. Jedes Argument wird als UND-Bedingung behandelt, d.h. alle Bedingungen müssen erfüllt sein, um in die Ergebnisse aufgenommen zu werden.
Zum Beispiel, wenn Sie alle Benutzer finden möchten, die in Berlin leben UND älter als 18 Jahre sind, würden Sie so etwas tun:
```
User.objects.filter(city=“Berlin”, age__gt=18)
```
In diesem Beispiel verwendet Django den `__gt` “field lookup”, um Benutzer zu finden, deren Alter größer als 18 ist.
Django unterstützt eine Reihe von verschiedenen Field Lookups, einschließlich `__exact`, `__iexact`, `__contains`, `__icontains`, `__in`, `__gt`, `__gte`, `__lt`, `__lte`, `__startswith`, `__istartswith`, `__endswith`, `__iendswith`, `__range`, `__year`, `__month`, `__day`, `__week_day`, `__isnull`, `__search`, `__regex`, und `__iregex`.
Es ist wichtig zu beachten, dass die `filter()` Methode ein neues QuerySet zurückgibt, das Sie weiter filtern oder bearbeiten können. Wenn Sie zum Beispiel die obige Abfrage verwenden und dann alle Benutzer, die in Berlin leben, älter als 18 sind und deren Nachname mit “S” beginnt, finden möchten, könnten Sie so etwas tun:
```
User.objects.filter(city=“Berlin”, age__gt=18).filter(last_name__startswith=“S”)
```
Für weitere Informationen und Beispiele empfehle ich die Django-Dokumentation zur Verwendung der QuerySet API, insbesondere den Abschnitt zum Filtern von Daten.
Quelle: Making Queries – Django Dokumentation. Verfügbar unter: https://docs.djangoproject.com/en/3.2/topics/db/queries/.