Piton

Kako filtrirati podatke u Djangu?

Kako filtrirati podatke u Djangu?
Vrlo je čest zahtjev da web aplikacija prikazuje podatke na web stranici na temelju interesa korisnika. Značajka pretraživanja aplikacije čini je jednostavnijom za upotrebu.  Django framework ima ugrađen filtar() metoda za filtriranje podataka iz tablica baze podataka. Tablica može sadržavati mnogo zapisa, a ponekad su potrebni utvrđivanje nekih specifičnih podataka na temelju određenih kriterija. Ovaj zadatak postaje lakši pomoću filtar () metoda na različite načine. U ovom vodiču bit će riječi o načinu na koji se podaci iz tablice baze podataka mogu filtrirati metodom filtriranja na četiri različita načina.

Preduvjeti

Prije vježbanja primjera ovog vodiča, morate izvršiti sljedeće zadatke:

  1. Instalirajte Django verziju 3+ na Ubuntu 20+ (po mogućnosti)
  2. Stvorite Django projekt
  3. Pokrenite Django poslužitelj kako biste provjerili poslužitelj ispravno radi ili ne.

Postavite aplikaciju Django

A. Pokrenite sljedeću naredbu za stvaranje Django aplikacije s imenom filterapp.

$ python3 upravljanje.py startapp filterapp

B. Pokrenite sljedeću naredbu za stvaranje korisnika za pristup Django bazi podataka. Ako ste već stvorili korisnika, tada ne morate pokretati naredbu.

$ python3 upravljanje.py stvarauporabitelja

C. Dodajte naziv aplikacije u INSTALLED_APP dio py datoteka.

INSTALLED_APPS = [
..
"filterapp"
]

D. Stvorite mapu s imenom predlošci unutar filterapp mapu i postavite predložaka mjesto aplikacije u PREDLOZI dio py datoteka.

PREDLOZI = [

.. .
'DIRS': ['/ home / fahmida / django_pro / filterapp / predlošci'],
.. .
,
]

Stvorite model za tablicu baze podataka

Otvori modeli.py datoteka iz filterapp mapu i dodajte sljedeću skriptu da definirate strukturu zaposlenici stolovi. Zaposlenik klasa je definirana za stvaranje tablice s imenom zaposlenici s ime, pošta, e-pošta, odjel, i Datum pridruženja polja. Ovdje, ime, radno mjesto, i odjel polja pohranit će podatke o znakovima, e-mail polje će pohraniti adresu e-pošte i Datum pridruženja polje će pohraniti podatke o datumu.

modeli.py

# Uvoz modula modula
iz djanga.db modeli uvoza
# Definirajte klasu za izradu tablice zaposlenika
razred Zaposlenik (modeli.Model):
ime = modeli.CharField (max_length = 50)
post = modeli.CharField (max_length = 40)
e-mail = modeli.Polje e-pošte ()
odjel = modeli.CharField (max_length = 30)
joinning_date = modeli.Polje datuma ()

Pokrenite makemigracije naredba za stvaranje nove migracije na temelju promjena koje su izvršili modeli.

$ python3 upravljanje.py makemigrations filterapp

Pokrenite migrirati naredba za izvršavanje SQL naredbi i stvaranje svih tablica u bazi podataka koje su definirane u modeli.py datoteka.

$ python3 upravljanje.py migrirati

Izmijenite sadržaj admin.py datoteka sa sljedećim sadržajem. Ovdje, zaposlenik klasa modela registrirana je pomoću registar () metoda za prikaz evidencija zaposlenih tablice na nadzornoj ploči administracije Django.

admin.py

# Uvoz administrativnog modula
iz djanga.doprinos uvoz admin
# Uvoz modela zaposlenika
iz .modeli uvoz zaposlenik
# Registrirajte model zaposlenika
admin.web mjesto.registar (zaposlenik)

Pokrenite sljedeći URL da biste otvorili stranicu za prijavu Django administratora. Navedite važeće korisničko ime i lozinku za otvaranje Nadzorna ploča uprave Django za pristup tablicama baze podataka.

Umetnite dvije ili više evidencija zaposlenika da biste primijenili filtar na podatke. Ovdje je umetnuto pet zapisa.

Stvorite traži.html datoteka unutar filterapp / predlošci / mapa sa sljedećom skriptom. Podaci iz zaposlenik tablica će biti prikazana u ovoj datoteci predloška. za petlja koristi se za čitanje sadržaja popis_objekata varijabla koja će se proslijediti iz datoteke prikaza. The ime, radno mjesto, i odjel vrijednosti zaposlenici Tablica će se prikazati pomoću popisa.

traži.html

<br>Vodič za Django filtar<br>

Popis zaposlenika



    % za pražnjenje u object_list%

  1. emp.Ime (emp.post)


    emp.odjel odjel



  2. % endfor%

Otvori pogleda.py datoteka iz filterapp mapu i izmijenite sadržaj datoteke sljedećom skriptom. Nazivi modela i predloška definirani su u skripti.

pogleda.py

# Uvoz modula ListView
iz djanga.pogleda.generički uvoz ListView
# Uvoz modula zaposlenika
iz .modeli uvoz zaposlenik
# Uvoz Q modula
iz djanga.db.modeli uvoz Q
# Definirajte klasu za filtriranje podataka
razred SearchEfficiee (ListView):
# Definirajte model
model = Zaposlenik
# Definirajte predložak
template_name = 'pretraga.html '

Izmijenite sadržaj url adrese.py datoteka sa sljedećim sadržajem. U scenariju, 'searchEmp'staza je definirana za pozivanje SearchE Employee.as_view () metoda koja će poslati sve podatke i filtrirane podatke zaposlenici tablicu u datoteku predloška.

url adrese.py

# Uvoz administrativnog modula
iz djanga.doprinos uvoz admin
# Uvezi put i uključi modul
iz djanga.put uvoza URL-ova, uključi
# Uvoz modula SearchEfficiee
iz filterappa.pregledi uvozi SearchEfficiee
urlpatterns = [
# Definirajte put za administratora
put ('admin /', admin.web mjesto.URL-ovi),
# Definirajte put za pretraživanje
path ('searchEmp /', SearchE Employee.as_view ()),
]

Sljedeći će se izlaz pojaviti bez primjene bilo kakvog filtriranja za sljedeći URL.

http: // localhost: 8000 / SerachEmp

Filtriranje podataka jednostavnim filtriranjem

Dodajte sljedeći redak na kraju pogleda.py datoteku za filtriranje zapisa zaposlenici tablica u kojoj je vrijednost post polje je 'Računovođa'.

# Primijenite osnovno filtriranje
queryset = Zaposlenik.predmeta.filter (post = 'Računovođa')

Sljedeći će se izlaz pojaviti nakon primjene osnovnog filtriranja.

Filtrirajte podatke s više polja

Dodajte sljedeći redak na kraju pogleda.py datoteku za filtriranje zapisa zaposlenici tablica u kojoj je vrijednost odjel polje je 'HT'i e-mail polje je '[e-pošta zaštićena]'.

# Primijenite filtriranje s više polja
queryset = Zaposlenik.predmeta.filtar (odjel = 'HR', email = '[zaštićen e-poštom]')

Sljedeći će se izlaz pojaviti nakon primjene višestrukog filtriranja.

Filtrirajte podatke pomoću Q objekta

Dodajte sljedeći redak na kraju pogleda.py datoteku za filtriranje zapisa zaposlenici tablica u kojoj je vrijednost post polje je 'Menadžer'ili vrijednost odjel polje je 'Prodajni'.

# Primijenite filtriranje pomoću Q objekata
queryset = Zaposlenik.predmeta.filtar (Q (post = 'Voditelj') | Q (odjel = 'Prodaja'))

Sljedeći će se izlaz pojaviti nakon primjene filtriranja Q objekta.

Filtrirajte podatke pomoću lančanog filtriranja

Dodajte sljedeći redak na kraju pogleda.py datoteku za filtriranje zapisa zaposlenici tablica u kojoj je vrijednost odjel polje će se prvo provjeriti, a ako vrati true, vrijednost polja Ime polje će biti provjereno.

# Primijeni filtriranje lancem
queryset = Zaposlenik.predmeta.filtar (odjel = 'HR').filter (name = 'Mehrab Hossain')

Sljedeći će se izlaz pojaviti nakon primjene lančanog filtra.

Zaključak

Podaci se u Djangu mogu filtrirati na mnogo načina na temelju zahtjeva aplikacije. U ovom su uputstvu objašnjena četiri različita načina filtriranja kako bi se razumjele osnove Django filtriranja. To su jednostavno filtriranje, višestruko filtriranje, filtriranje s Q objektom i lančano filtriranje.

Vulkan za korisnike Linuxa
Sa svakom novom generacijom grafičkih kartica vidimo da programeri igara pomiču granice grafičke vjernosti i dolaze na korak od fotorealizma. No, bez ...
OpenTTD vs Simutrans
Stvaranje vlastite simulacije prijevoza može biti zabavno, opuštajuće i izuzetno primamljivo. Zbog toga morate isprobati što više igara kako biste pro...
Vodič za OpenTTD
OpenTTD je jedna od najpopularnijih igara za poslovnu simulaciju. U ovoj igri morate stvoriti prekrasan prijevoznički posao. Međutim, počet ćete u poč...