So filtern Sie Daten in Django?

So filtern Sie Daten in Django?
Es ist eine sehr häufige Voraussetzung für die Webanwendung, Daten auf der Webseite basierend auf dem Interesse des Benutzers anzuzeigen. Die Suchfunktion der Anwendung macht sie benutzerfreundlicher. Django Framework hat ein integriert Filter() Methode zum Filtern von Daten aus den Datenbanktabellen. Eine Tabelle kann viele Datensätze enthalten, und manchmal werden einige spezifische Daten basierend auf den bestimmten Kriterien erforderlich. Diese Aufgabe wird einfacher durch die Verwendung Der Filter() Methode auf unterschiedliche Weise. Wie die Daten aus einer Datenbanktabelle mit der Filtermethode auf vier verschiedene Arten filtriert werden können, werden in diesem Tutorial erörtert.

Voraussetzungen

Bevor Sie die Beispiele dieses Tutorials üben, müssen Sie die folgenden Aufgaben erledigen:

  1. Installieren Sie die Django Version 3+ auf Ubuntu 20+ (vorzugsweise)
  2. Erstellen Sie ein Django -Projekt
  3. Führen Sie den Django -Server aus, um zu überprüfen, ob der Server ordnungsgemäß funktioniert oder nicht.

Richten Sie eine Django -App ein

A. Führen Sie den folgenden Befehl aus, um eine Django -App mit dem Namen zu erstellen filterapp.

$ python3 verwalten.PY StartApp FilterApp

B. Führen Sie den folgenden Befehl aus, um den Benutzer zum Zugriff auf die Django -Datenbank zu erstellen. Wenn Sie den Benutzer zuvor erstellt haben, müssen Sie den Befehl nicht ausführen.

$ python3 verwalten.Py erzeugt

C. Fügen Sie den App -Namen in die hinzu Installed_app Teil der py Datei.

Installed_apps = [

'filterApp'
]

D. Erstellen Sie einen Ordner mit dem Namen Vorlagen in der filterapp Ordner und setzen Sie die Vorlage Ort der App in der Vorlagen Teil der py Datei.

Vorlagen = [

… .
'Dirs': ['/home/fahmida/django_pro/filterapp/templates'],
… .
,
]

Erstellen Sie ein Modell für die Datenbanktabelle

Öffne das Modelle.py Datei aus der filterapp Ordner und fügen Sie das folgende Skript hinzu, um die Struktur von zu definieren Mitarbeiter Tische. Mitarbeiter Die Klasse wird definiert, um eine Tabelle mit dem Namen zu erstellen Mitarbeiter mit Name, Post, E -Mail, Abteilung, Und Beitrittsdatum Felder. Hier, Name, Post, Und Abteilung Felder speichern Charakterdaten, die Email Das Feld speichert die E -Mail -Adresse und die Beitrittsdatum Das Feld speichert Datumsdaten.

Modelle.py

# Modulmodul importieren
von django.DB -Importmodelle
# Klasse definieren, um Mitarbeitertabelle zu erstellen
Klassenangestellte (Modelle.Modell):
Name = Modelle.Charfield (max_length = 50)
Post = Modelle.Charfield (max_length = 40)
E -Mail = Modelle.E -Mailfield ()
Abteilung = Modelle.Charfield (max_length = 30)
joining_date = Modelle.DateField ()

Leiten Sie die Makemigrationen Befehl zum Erstellen einer neuen Migration basierend auf den von den Modellen vorgenommenen Änderungen.

$ python3 verwalten.PY Makemigrations FilterApp

Leiten Sie die Wandern Befehl zum Ausführen der SQL -Befehle und zum Erstellen aller Tabellen in der Datenbank, die in der definiert sind Modelle.py Datei.

$ python3 verwalten.py migrieren

Ändern Sie den Inhalt der Administrator.py Datei mit dem folgenden Inhalt. Hier, der Arbeitnehmer Die Klasse der Modelle wird mit verwendet das Register() Methode zur Anzeige der Anzeige Aufzeichnungen von Mitarbeitern Tabellen im Django Administration Dashboard.

Administrator.py

# Admin -Modul importieren
von django.Import Administrator beibringen
# Mitarbeitermodell importieren
aus .Modelle importieren Mitarbeiter
# Mitarbeitermodell registrieren
Administrator.Grundstück.Register (Mitarbeiter)

Führen Sie die folgende URL aus, um die Django Admin -Anmeldeseite zu öffnen. Geben Sie den gültigen Benutzernamen und das gültige Passwort an, um die zu öffnen Django Administration Dashboard So greifen Sie auf die Datenbanktabellen zu.

Fügen Sie zwei oder mehr Mitarbeiterdatensätze ein, um den Filter auf die Daten anzuwenden. Hier werden fünf Datensätze eingefügt.

Erstellen die suchen.html Datei in der filterApp/templates/ Ordner mit dem folgenden Skript. Die Daten aus dem Mitarbeiter Die Tabelle wird in dieser Vorlagendatei angezeigt. für Schleife wird verwendet, um den Inhalt der zu lesen Object_List Variable, die aus der Ansichtsdatei übergeben wird. Der Name, Post, Und Abteilung Werte der Mitarbeiter Die Tabelle wird mit der Liste angezeigt.

suchen.html

<br>Django Filter Tutorial<br>

Mitarbeiterliste



    % für EMP in Object_List %

  1. emp.Name (emp.Post )


    emp.Abteilung Abteilung



  2. % endfor %

Öffne das Ansichten.py Datei aus der filterapp Ordner und ändern Sie den Inhalt der Datei mit dem folgenden Skript. Modell- und Vorlagennamen werden im Skript definiert.

Ansichten.py

# ListView -Modul importieren
von django.Ansichten.Generisches Import -Listenansicht
# Mitarbeitermodul importieren
aus .Modelle importieren Mitarbeiter
# Q -Modul importieren
von django.db.Modelle importieren q
# Klasse zum Filtern von Daten definieren
Klassensuchbeschäftigung (ListView):
# Modell definieren
Modell = Mitarbeiter
# Vorlage definieren
template_name = 'Suche.html '

Ändern Sie den Inhalt der URLs.py Datei mit dem folgenden Inhalt. Im Skript das ''Searchemp'Pfad wird definiert, um das aufzurufen Suchbeschäftigung.As_view () Methode, mit der alle Daten und die gefilterten Daten der gesendet werden Mitarbeiter Tabelle zur Vorlagendatei.

URLs.py

# Admin -Modul importieren
von django.Import Administrator beibringen
# Pfad importieren und Modul einschließen
von django.URLS -Importpfad einschließen
# Suchbearbeitungsmodul importieren
Aus FilterApp.Ansichten importieren Suchbekenntnisse
urlpatterns = [
# Definieren Sie den Pfad für den Administrator
Pfad ('Admin/', Administrator.Grundstück.URLs),
# Definieren Sie den Pfad für die Suche
Path ('Searchemp/', Suchbearbeitungsarbeiter.As_view ()),
]

Die folgende Ausgabe wird angezeigt, ohne die Filterung für die folgende URL anzuwenden.

http: // localhost: 8000/serachemp

Filterdaten durch einfache Filterung

Fügen Sie die folgende Zeile am Ende des Ansichten.py Datei zum Filtern der Aufzeichnungen der Mitarbeiter Tabelle, wobei der Wert der Post Feld ist ''Buchhalter''.

# Basisfilterung anwenden
queryset = Mitarbeiter.Objekte.filter (post = 'Buchhalter')

Die folgende Ausgabe wird nach der Anwendung der Grundfilterung angezeigt.

Filterdaten mit mehreren Feldern

Fügen Sie die folgende Zeile am Ende des Ansichten.py Datei zum Filtern der Aufzeichnungen der Mitarbeiter Tabelle, wobei der Wert der Abteilung Feld ist ''Ht' Und die Email Feld ist '[email protected] '.

# Filterung mit mehreren Feldern anwenden
queryset = Mitarbeiter.Objekte.filter (Abteilung = 'HR', E -Mail = '[email protected] '))

Die folgende Ausgabe wird nach dem Auftragen mehrerer Filterung angezeigt.

Filterdaten mit Q -Objekt filtern

Fügen Sie die folgende Zeile am Ende des Ansichten.py Datei zum Filtern der Aufzeichnungen der Mitarbeiter Tabelle, wobei der Wert der Post Feld ist ''Manager'oder der Wert der Abteilung Feld ist ''Verkauf''.

# Filterung mit q -Objekten anwenden
queryset = Mitarbeiter.Objekte.filter (q (post = 'Manager') | Q (Abteilung = 'Vertrieb'))

Die folgende Ausgabe wird nach Anwendung der Q -Objektfilterung angezeigt.

Filterdaten mithilfe der Filterverkettung

Fügen Sie die folgende Zeile am Ende des Ansichten.py Datei zum Filtern der Aufzeichnungen der Mitarbeiter Tabelle, wobei der Wert der Abteilung Das Feld wird zuerst überprüft und wenn es true zurückgibt, wird der Wert des Name Das Feld wird überprüft.

# Filterung durch Verketten anwenden
queryset = Mitarbeiter.Objekte.Filter (Abteilung = 'HR').filter (name = 'Mehrab Hossain')

Die folgende Ausgabe wird nach Anwendung der Filterverkettung angezeigt.

Abschluss

Die Daten können in Django auf vielfältige Weise basierend auf den Anwendungsanforderungen filtriert werden. In diesem Tutorial wurden vier verschiedene Filtermethoden erklärt, um die Grundlagen der Django -Filterung zu verstehen. Dies sind einfache Filterung, Mehrfachfilterung, Filterung mit Q -Objekt und Filterverkettung.