Python

Hvordan filtrere data i Django?

Hvordan filtrere data i Django?
Det er et veldig vanlig krav for at webapplikasjonen skal vise data på websiden basert på brukerens interesse. Søkefunksjonen i applikasjonen gjør den mer brukervennlig.  Django framework har en innebygd filter() metode for å filtrere data fra databasetabellene. En tabell kan inneholde mange poster, og noen ganger er det nødvendig å bestemme noen spesifikke data basert på bestemte kriterier. Denne oppgaven blir lettere ved å bruke filteret () metode på forskjellige måter. Hvordan dataene fra en databasetabell kan filtreres ved hjelp av filtermetoden på fire forskjellige måter, vil bli diskutert i denne veiledningen.

Forutsetninger

Før du praktiserer eksemplene på denne veiledningen, må du fullføre følgende oppgaver:

  1. Installer Django versjon 3+ på Ubuntu 20+ (helst)
  2. Lag et Django-prosjekt
  3. Kjør Django-serveren for å kontrollere at serveren fungerer som den skal eller ikke.

Konfigurer en Django-app

EN. Kjør følgende kommando for å opprette en Django-app med navnet filterapp.

$ python3 administrere.py startapp filterapp

B. Kjør følgende kommando for å opprette brukeren for tilgang til Django-databasen. Hvis du har opprettet brukeren før, trenger du ikke å kjøre kommandoen.

$ python3 administrere.py skaperbruker

C. Legg til appnavnet i INSTALLERT_APP del av py fil.

INSTALLED_APPS = [
..
'filterapp'
]

D. Opprett en mappe med navnet maler inne i filterapp mappen og still inn malens plasseringen av appen i MALER del av py fil.

MALER = [

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

Lag en modell for databasetabellen

Åpne modeller.py fil fra filterapp mappen og legg til følgende skript for å definere strukturen til ansatte bord. Ansatt klasse er definert for å lage en tabell som heter ansatte med navn, post, e-post, avdeling, og blir med_dato Enger. Her, navn, innlegg, og avdeling felt vil lagre karakterdata, e-post feltet lagrer e-postadressen og blir med_dato feltet vil lagre datadata.

modeller.py

# Importer modeller-modulen
fra django.db import modeller
# Definer klasse for å lage tabell for ansatte
klasse Ansatt (modeller.Modell):
navn = modeller.CharField (max_length = 50)
post = modeller.CharField (max_length = 40)
e-post = modeller.EmailField ()
avdeling = modeller.CharField (max_length = 30)
joinning_date = modeller.DateField ()

Kjør makemigrasjoner kommando for å opprette en ny migrering basert på endringene som er gjort av modellene.

$ python3 administrere.py makemigrations filterapp

Kjør migrere kommando for å utføre SQL-kommandoene og opprette alle tabeller i databasen som er definert i modeller.py fil.

$ python3 administrere.py migrere

Endre innholdet i admin.py fil med følgende innhold. Her, den ansatte klasse av modellene er registrert ved hjelp av registeret () metode for å vise register over ansatte tabeller i Django-administrasjons dashbordet.

admin.py

# Importer administrasjonsmodul
fra django.bidrag importadministrator
# Importer ansattmodell
fra .modeller importerer ansatt
# Registrer ansattmodell
admin.nettstedet.registrer deg (ansatt)

Kjør følgende URL for å åpne påloggingssiden for Django-admin. Oppgi gyldig brukernavn og passord for å åpne Django Administration Dashboard for å få tilgang til databasetabellene.

Sett inn to eller flere medarbeiderposter for å bruke filteret på dataene. Her settes inn fem poster.

Opprett Søk.html filen inne i filterapp / maler / mappe med følgende skript. Dataene fra ansatt tabellen vises i denne malfilen. til loop brukes til å lese innholdet i objekt_liste variabel som sendes fra visningsfilen. De navn, innlegg, og avdeling verdiene til ansatte vil vises ved hjelp av listen.

Søk.html

<br>Django filterveiledning<br>

Ansatteliste



    % for emp i object_list%

  1. emp.Navn (emp.post )


    emp.avdeling avdeling



  2. % endfor%

Åpne utsikt.py fil fra filterapp mappen og endre innholdet i filen med følgende skript. Modell- og malnavn er definert i skriptet.

utsikt.py

# Import ListView-modul
fra django.utsikt.generisk import ListView
# Importer ansatt-modul
fra .modeller importerer ansatt
# Importer Q-modul
fra django.db.modeller importerer Q
# Definer klasse for filtrering av data
class SearchEmployee (ListView):
# Definer modell
modell = Ansatt
# Definer mal
template_name = 'søk.html '

Endre innholdet i nettadresser.py fil med følgende innhold. I manuset er 'søkEmpbanen er definert for å kalle SøkMedarbeider.som_visning () metoden som vil sende alle data og de filtrerte dataene til ansatte tabellen til malfilen.

nettadresser.py

# Importer administrasjonsmodul
fra django.bidrag importadministrator
# Importer bane og inkluder modul
fra django.urls importsti, inkluderer
# Importer søkemodulmodul
fra filterapp.visninger importerer SearchEmployee
urlpatterns = [
# Definer banen for admin
sti ('admin /', admin.nettstedet.nettadresser),
# Definer stien for søk
sti ('searchEmp /', SearchEmployee.as_view ()),
]

Følgende utdata vises uten å filtrere for følgende URL.

http: // localhost: 8000 / SerachEmp

Filtrer data ved enkel filtrering

Legg til følgende linje på slutten av utsikt.py fil for å filtrere postene til ansatte tabell hvor verdien av post feltet er 'Regnskapsfører'.

# Bruk grunnleggende filtrering
queryset = Ansatt.gjenstander.filter (post = 'Accountant')

Følgende utdata vises etter bruk av grunnleggende filtrering.

Filtrer data med flere felt

Legg til følgende linje på slutten av utsikt.py fil for å filtrere postene til ansatte tabell hvor verdien av avdeling feltet er 'HT'og eposten feltet er '[e-postbeskyttet]'.

# Bruk filtrering med flere felt
queryset = Ansatt.gjenstander.filter (department = 'HR', email = '[email protected]')

Følgende utdata vises etter bruk av flere filtreringer.

Filtrer data med Q-objekt

Legg til følgende linje på slutten av utsikt.py fil for å filtrere postene til ansatte tabell hvor verdien av post feltet er 'sjef'eller verdien av avdeling feltet er 'Salg'.

# Bruk filtrering ved å bruke Q-objekter
queryset = Ansatt.gjenstander.filter (Q (post = 'Manager') | Q (department = 'Sales'))

Følgende utdata vises etter bruk av Q-objektfiltrering.

Filtrer data ved å bruke filterkjetting

Legg til følgende linje på slutten av utsikt.py fil for å filtrere postene til ansatte tabell hvor verdien av avdeling feltet vil bli sjekket først, og hvis det returnerer sant, blir verdien av Navn feltet vil bli sjekket.

# Bruk filtrering ved å lenke
queryset = Ansatt.gjenstander.filter (department = 'HR').filter (name = 'Mehrab Hossain')

Følgende utdata vises etter bruk av filterkjetting.

Konklusjon

Dataene kan filtreres i Django på mange måter basert på applikasjonskravene. Fire forskjellige måter å filtrere på ble forklart i denne veiledningen for å forstå det grunnleggende om Django-filtrering. Dette er enkel filtrering, flerfiltrering, filtrering med Q-objekt og filterkjetting.

Mus Hvordan endre venstre og høyre museknapp på Windows 10 PC
Hvordan endre venstre og høyre museknapp på Windows 10 PC
Det er ganske vanlig at alle datamusenheter er ergonomisk designet for høyrehendte brukere. Men det er tilgjengelige musenheter som er spesielt design...
Mus Etterlig museklikk ved å sveve med Clickless Mouse i Windows 10
Etterlig museklikk ved å sveve med Clickless Mouse i Windows 10
Bruk av mus eller tastatur i feil stilling for overdreven bruk kan føre til mange helseproblemer, inkludert belastning, karpaltunnelsyndrom og mer. I ...
Mus Legg til musebevegelser i Windows 10 ved hjelp av disse gratisverktøyene
Legg til musebevegelser i Windows 10 ved hjelp av disse gratisverktøyene
De siste årene har datamaskiner og operativsystemer utviklet seg sterkt. Det var en tid da brukere måtte bruke kommandoer for å navigere gjennom filad...