Pytonorm

Hur man filtrerar data i Django?

Hur man filtrerar data i Django?
Det är ett mycket vanligt krav för webbapplikationen att visa data på webbsidan baserat på användarens intresse. Programmets sökfunktion gör den mer användarvänlig.  Django ramverk har en inbyggd filtrera() metod för att filtrera data från databastabellerna. En tabell kan innehålla många poster och ibland krävs att vissa specifika data baseras på de specifika kriterierna. Denna uppgift blir enklare med hjälp av filtret () metod på olika sätt. Hur data från en databastabell kan filtreras med hjälp av filtermetoden på fyra olika sätt kommer att diskuteras i denna handledning.

Förutsättningar

Innan du övar på exemplen i denna handledning måste du slutföra följande uppgifter:

  1. Installera Django version 3+ på Ubuntu 20+ (helst)
  2. Skapa ett Django-projekt
  3. Kör Django-servern för att kontrollera att servern fungerar korrekt eller inte.

Ställ in en Django-app

A. Kör följande kommando för att skapa en Django-app med namnet filterapp.

$ python3 hantera.py startapp filterapp

B. Kör följande kommando för att skapa användaren för åtkomst till Django-databasen. Om du har skapat användaren innan behöver du inte köra kommandot.

$ python3 hantera.py skaparanvändare

C. Lägg till appnamnet i INSTALLERAD_APP del av py fil.

INSTALLED_APPS = [
..
'filterapp'
]

D. Skapa en mapp med namnet mallar inuti filterapp mapp och ställ in mallar plats för appen i MALLAR del av py fil.

MALLAR = [

.. .
'DIRS': ['/ home / fahmida / django_pro / filterapp / mallar'],
.. .
,
]

Skapa en modell för databastabellen

Öppna modeller.py fil från filterapp mappen och lägg till följande skript för att definiera strukturen för anställda tabeller. Anställd klass definieras för att skapa en tabell med namnet anställda med namn, post, e-post, avdelning, och Inträdesdatum fält. Här, namn, inlägg, och avdelning fält kommer att lagra teckendata, e-post fältet lagrar e-postadressen och Inträdesdatum fältet kommer att lagra datumdata.

modeller.py

# Importera modeller-modulen
från django.db-importmodeller
# Definiera klass för att skapa tabell för anställda
klass Anställd (modeller.Modell):
namn = modeller.CharField (max_length = 50)
post = modeller.CharField (max_length = 40)
e-post = modeller.EmailField ()
avdelning = modeller.CharField (max_length = 30)
joinning_date = modeller.DateField ()

Springa det makemigrationer kommando för att skapa en ny migration baserat på de ändringar som gjorts av modellerna.

$ python3 hantera.py makemigrations filterapp

Springa det flytta kommando för att utföra SQL-kommandon och skapa alla tabeller i databasen som definieras i modeller.py fil.

$ python3 hantera.py migrera

Ändra innehållet i administration.py fil med följande innehåll. Här, den anställde klass av modellerna registreras med registret() metod för att visa register över anställda i Django-administrationspanelen.

administration.py

# Importera administratörsmodul
från django.bidrag importadministratör
# Importera anställdsmodell
från .modeller importerar anställd
# Registrera anställdsmodell
administration.webbplats.register (Anställd)

Kör följande URL för att öppna inloggningssidan för Django-admin. Ange giltigt användarnamn och lösenord för att öppna Django Administration Dashboard för att komma åt databastabellerna.

Infoga två eller flera anställdsposter för att tillämpa filtret på data. Här infogas fem poster.

Skapa Sök.html fil inuti filterapp / mallar / mapp med följande skript. Uppgifterna från anställd tabellen visas i denna mallfil. för loop används för att läsa innehållet i objekt_lista variabel som skickas från visningsfilen. De namn, inlägg, och avdelning värdena för anställda tabellen visas med hjälp av listan.

Sök.html

<br>Django filterhandledning<br>

Lista över anställda



    % för emp i objekt_lista%

  1. emp.namn (emp.posta)


    emp.avdelning avdelning



  2. % endfor%

Öppna utsikt.py fil från filterapp mappen och ändra innehållet i filen med följande skript. Modell- och mallnamn definieras i skriptet.

utsikt.py

# Import ListView-modul
från django.utsikt.generisk import ListView
# Importera anställdsmodul
från .modeller importerar anställd
# Importera Q-modul
från django.db.modeller importerar Q
# Definiera klass för filtrering av data
klass Sök medarbetare (ListView):
# Definiera modell
modell = anställd
# Definiera mall
template_name = 'sök.html '

Ändra innehållet i webbadresser.py fil med följande innehåll. I manuset står 'searchEmp'väg definieras för att anropa Sök Anställd.as_view () metod som skickar all data och filtrerade data från anställda tabellen till mallfilen.

webbadresser.py

# Importera administratörsmodul
från django.bidrag importadministratör
# Importera sökväg och inkludera modul
från django.webbadress för webbadresser, inkludera
# Importera sökmedlemmodul
från filterapp.visningar importerar SearchEmployee
urlmönster = [
# Definiera sökvägen för admin
sökväg ('admin /', admin.webbplats.webbadresser),
# Definiera sökvägen
sökväg ('searchEmp /', SearchEmployee.as_view ()),
]

Följande utdata visas utan filtrering för följande URL.

http: // localhost: 8000 / SerachEmp

Filtrera data genom enkel filtrering

Lägg till följande rad i slutet av utsikt.py fil för att filtrera posterna för anställda tabell där värdet på posta fältet är 'Revisor''.

# Tillämpa grundläggande filtrering
queryset = Anställd.föremål.filter (post = 'Accountant')

Följande utdata visas efter tillämpning av grundläggande filtrering.

Filtrera data med flera fält

Lägg till följande rad i slutet av utsikt.py fil för att filtrera posterna för anställda tabell där värdet på avdelning fältet är 'HT'och eposten fältet är '[e-postskyddad]'.

# Tillämpa filtrering med flera fält
queryset = Anställd.föremål.filter (department = 'HR', email = '[email protected]')

Följande utdata visas efter att flera filter har tillämpats.

Filtrera data med Q-objekt

Lägg till följande rad i slutet av utsikt.py fil för att filtrera posterna för anställda tabell där värdet på posta fältet är 'Chef'eller värdet på avdelning fältet är 'Försäljning''.

# Tillämpa filtrering med hjälp av Q-objekt
queryset = Anställd.föremål.filter (Q (post = 'Manager') | Q (department = 'Sales'))

Följande utdata visas efter att Q-objektfiltrering har tillämpats.

Filtrera data med hjälp av filterkedjning

Lägg till följande rad i slutet av utsikt.py fil för att filtrera posterna för anställda tabell där värdet på avdelning fältet kommer att kontrolleras först och om det returnerar sant så kommer värdet på namn fält kommer att kontrolleras.

# Tillämpa filtrering genom kedjning
queryset = Anställd.föremål.filter (department = 'HR').filter (name = 'Mehrab Hossain')

Följande utdata kommer att visas efter filterkedjning.

Slutsats

Uppgifterna kan filtreras i Django på många sätt baserat på applikationskraven. Fyra olika sätt att filtrera förklarades i denna handledning för att förstå grunderna för Django-filtrering. Dessa är enkel filtrering, multipelfiltrering, filtrering med Q-objekt och filterkedjning.

Bästa kommandoradsspel för Linux
Kommandoraden är inte bara din största allierade när du använder Linux, det kan också vara källan till underhållning eftersom du kan använda den för a...
Bästa Gamepad Mapping Apps för Linux
Om du gillar att spela spel på Linux med en gamepad istället för ett typiskt tangentbord och musinmatningssystem, finns det några användbara appar för...
Användbara verktyg för Linux-spelare
Om du gillar att spela spel på Linux är chansen att du kan ha använt appar och verktyg som Wine, Lutris och OBS Studio för att förbättra spelupplevels...