Python

Sådan filtreres data i Django?

Sådan filtreres data i Django?
Det er et meget almindeligt krav for webapplikationen at vise data på websiden baseret på brugerens interesse. Programmets søgefunktion gør den mere brugervenlig.  Django framework har en indbygget filter() metode til at filtrere data fra databasetabellerne. En tabel kan indeholde mange poster, og nogle gange er det nødvendigt at bestemme nogle specifikke data baseret på de særlige kriterier. Denne opgave bliver lettere ved at bruge filteret () metode på forskellige måder. Hvordan data fra en databasetabel kan filtreres ved hjælp af filtermetoden på fire forskellige måder vil blive diskuteret i denne vejledning.

Forudsætninger

Inden du praktiserer eksemplerne på denne vejledning, skal du udføre følgende opgaver:

  1. Installer Django version 3+ på Ubuntu 20+ (helst)
  2. Opret et Django-projekt
  3. Kør Django-serveren for at kontrollere, at serveren fungerer korrekt eller ej.

Opsæt en Django-app

EN. Kør følgende kommando for at oprette en Django-app med navnet filterapp.

$ python3 administrere.py startapp filterapp

B. Kør følgende kommando for at oprette brugeren til adgang til Django-databasen. Hvis du har oprettet brugeren før, behøver du ikke køre kommandoen.

$ python3 administrere.py skaberbruger

C. Tilføj appnavnet i INSTALLERET_APP en del af py fil.

INSTALLED_APPS = [
..
'filterapp'
]

D. Opret en mappe med navnet skabeloner inde i filterapp mappe og indstil skabeloner placering af appen i MALLER en del af py fil.

MALLER = [

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

Opret en model til databasetabellen

Åbn modeller.py fil fra filterapp mappen og tilføj følgende script for at definere strukturen af medarbejdere tabeller. Medarbejder klasse er defineret til at oprette en tabel med navnet medarbejdere med navn, post, e-mail, afdeling, og tilslutning_dato felter. Her, navn, post, og afdeling felter gemmer karakterdata, e-mail feltet gemmer e-mail-adressen og tilslutning_dato felt gemmer datadata.

modeller.py

# Importmodulmodul
fra django.db import modeller
# Definer klasse for at oprette medarbejdertabel
klasse Medarbejder (modeller.Model):
navn = modeller.CharField (max_length = 50)
post = modeller.CharField (max_length = 40)
e-mail = modeller.EmailField ()
afdeling = modeller.CharField (max_length = 30)
joinning_date = modeller.DateField ()

Kør makemigrationer kommando til at oprette en ny migration baseret på ændringer foretaget af modellerne.

$ python3 administrere.py makemigrations filterapp

Kør migrere kommando til at udføre SQL-kommandoer og oprette alle tabeller i databasen, der er defineret i modeller.py fil.

$ python3 administrere.py migrere

Rediger indholdet af admin.py fil med følgende indhold. Her, den ansatte klasse af modeller registreres ved hjælp af registret () metode til at vise optegnelser over medarbejdere tabeller i Django-administrationens dashboard.

admin.py

# Importér admin-modul
fra django.import importadministrator
# Importer medarbejdermodel
fra .modeller importerer medarbejder
# Registrer medarbejdermodel
admin.websted.register (Medarbejder)

Kør følgende URL for at åbne Django admin-login-siden. Angiv det gyldige brugernavn og adgangskode for at åbne Django Administration Dashboard for at få adgang til databasetabellerne.

Indsæt to eller flere medarbejderregistreringer for at anvende filteret på dataene. Her indsættes fem poster.

Opret Søg.html fil inde i filterapp / skabeloner / mappe med følgende script. Dataene fra medarbejder tabellen vises i denne skabelonfil. til loop bruges til at læse indholdet af objekt_liste variabel, der sendes fra visningsfilen. Det navn, post, og afdeling værdier af medarbejdere tabellen vises ved hjælp af listen.

Søg.html

<br>Vejledning til Django-filter<br>

Medarbejderliste



    % for emp i object_list%

  1. emp.navn (emp.post)


    emp.afdeling afdeling



  2. % endfor%

Åbn synspunkter.py fil fra filterapp mappe og rediger indholdet af filen med følgende script. Model- og skabelonnavne er defineret i scriptet.

synspunkter.py

# Import ListView-modul
fra django.synspunkter.generisk import ListView
# Importér medarbejdermodul
fra .modeller importerer medarbejder
# Importer Q-modul
fra django.db.modeller importerer Q
# Definer klasse til filtrering af data
klasse Søgemedarbejder (ListView):
# Definer model
model = Medarbejder
# Definer skabelon
template_name = 'søg.html '

Rediger indholdet af webadresser.py fil med følgende indhold. I manuskriptet står 'searchEmpstien er defineret til at kalde Søg medarbejder.som_visning () metode, der sender alle data og de filtrerede data fra medarbejdere tabel til skabelonfilen.

webadresser.py

# Importér admin-modul
fra django.import importadministrator
# Importer sti og inkluder modul
fra django.urls importsti, inkluderer
# Importer søgemodulmodul
fra filterapp.visninger importerer SearchEmployee
urlmønstre = [
# Definer stien til admin
sti ('admin /', admin.websted.webadresser),
# Definer stien til søgning
sti ('searchEmp /', SearchEmployee.som_visning ()),
]

Følgende output vises uden anvendelse af filtrering til følgende URL.

http: // localhost: 8000 / SerachEmp

Filtrer data ved simpel filtrering

Tilføj følgende linje i slutningen af synspunkter.py fil for at filtrere posterne for medarbejdere tabel, hvor værdien af stolpe felt er 'Revisor''.

# Anvend grundlæggende filtrering
queryset = Medarbejder.genstande.filter (post = 'Revisor')

Følgende output vises efter anvendelse af grundlæggende filtrering.

Filtrer data med flere felter

Tilføj følgende linje i slutningen af synspunkter.py fil for at filtrere posterne for medarbejdere tabel, hvor værdien af afdeling felt er 'HT'og e-mailen felt er '[email protected]'.

# Anvend filtrering med flere felter
queryset = Medarbejder.genstande.filter (department = 'HR', email = '[email protected]')

Følgende output vises efter anvendelse af flere filtreringer.

Filtrer data med Q-objekt

Tilføj følgende linje i slutningen af synspunkter.py fil for at filtrere posterne for medarbejdere tabel, hvor værdien af stolpe felt er 'Manager'eller værdien af afdeling felt er 'Salg''.

# Anvend filtrering ved hjælp af Q-objekter
queryset = Medarbejder.genstande.filter (Q (post = 'Manager') | Q (department = 'Sales'))

Følgende output vises efter anvendelse af Q-objektfiltrering.

Filtrer data ved hjælp af filterkæde

Tilføj følgende linje i slutningen af synspunkter.py fil for at filtrere posterne for medarbejdere tabel, hvor værdien af afdeling felt kontrolleres først, og hvis det returnerer sandt, så værdien af navn felt kontrolleres.

# Anvend filtrering ved at kæde
queryset = Medarbejder.genstande.filter (afdeling = 'HR').filter (name = 'Mehrab Hossain')

Følgende output vises efter anvendelse af filterkæde.

Konklusion

Dataene kan filtreres i Django på mange måder baseret på applikationskravene. Fire forskellige måder til filtrering blev forklaret i denne vejledning for at forstå det grundlæggende ved Django-filtrering. Disse er simpel filtrering, flerfiltrering, filtrering med Q-objekt og filterkæde.

Mus Sådan vender du musens og touchpadsens rulle retning i Windows 10
Sådan vender du musens og touchpadsens rulle retning i Windows 10
Mus og Touchpads gør ikke kun computing let, men mere effektiv og mindre tidskrævende. Vi kan ikke forestille os et liv uden disse enheder, men det er...
Mus Sådan ændres musemarkør og markørstørrelse, farve og skema på Windows 10
Sådan ændres musemarkør og markørstørrelse, farve og skema på Windows 10
Musemarkøren og markøren i Windows 10 er meget vigtige aspekter af operativsystemet. Dette kan også siges om andre operativsystemer, så i sandhed er d...
Gratis og open source-spilmotorer til udvikling af Linux-spil
Denne artikel dækker en liste over gratis og open source-spilmotorer, der kan bruges til at udvikle 2D- og 3D-spil på Linux. Der er mange sådanne spil...