Python

Ako filtrovať údaje v Django?

Ako filtrovať údaje v Django?
Je veľmi častou požiadavkou, aby webová aplikácia zobrazovala údaje na webovej stránke na základe záujmu používateľa. Vďaka funkcii vyhľadávania je aplikácia prehľadnejšia.  Django framework má zabudovanú filter () metóda na filtrovanie údajov z databázových tabuliek. Tabuľka môže obsahovať veľa záznamov a niekedy je na základe konkrétnych kritérií potrebné určiť určité konkrétne údaje. Táto úloha sa uľahčí používaním filter () metódou rôznymi spôsobmi. V tomto tutoriáli sa dozvieme, ako je možné filtrovať údaje z databázovej tabuľky pomocou filtračnej metódy štyrmi rôznymi spôsobmi.

Predpoklady

Pred precvičením príkladov tohto tutoriálu musíte splniť nasledujúce úlohy:

  1. Nainštalujte si Django verzie 3+ na Ubuntu 20+ (najlepšie)
  2. Vytvorte projekt Django
  3. Spustením servera Django skontrolujte, či server funguje správne alebo nie.

Nainštalujte si aplikáciu Django

A. Spustením nasledujúceho príkazu vytvorte aplikáciu Django s názvom filterapp.

$ python3 spravovať.py startapp filterapp

B. Spustením nasledujúceho príkazu vytvorte používateľa pre prístup k databáze Django. Ak ste používateľa vytvorili už predtým, nemusíte tento príkaz spúšťať.

$ python3 spravovať.py vytvorí superužívateľa

C. Pridajte názov aplikácie do priečinka INSTALLED_APP časť py spis.

INSTALLED_APPS = [

'filterapp'
]

D. Vytvorte priečinok s názvom šablóny vnútri filterapp priečinok a nastavte šablóny umiestnenie aplikácie v ŠABLÓNY časť py spis.

TEMPLATES = [

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

Vytvorte model pre databázovú tabuľku

Otvor modely.py súbor z filterapp priečinok a pridajte nasledujúci skript, ktorý definuje štruktúru priečinka zamestnancov stoly. Zamestnanec triedy je definované na vytvorenie tabuľky s názvom zamestnancov s meno, pošta, e-mail, oddelenie, a dátum pripojenia polia. Tu, meno, príspevok, a oddelenie polia budú ukladať znakové údaje, e-mail do poľa sa uloží e-mailová adresa a dátum pripojenia pole uloží údaje o dátume.

modely.py

# Modul importu modelov
od djanga.db import modely
# Definujte triedu na vytvorenie tabuľky zamestnancov
trieda Zamestnanec (modely.Model):
meno = modely.CharField (max_length = 50)
post = modely.CharField (max_length = 40)
email = modely.EmailField ()
oddelenie = modely.CharField (max_length = 30)
joinning_date = modely.DateField ()

Spustiť makemigrácie príkaz na vytvorenie novej migrácie na základe zmien vykonaných modelmi.

$ python3 spravovať.py makemigrations filterapp

Spustiť migrovať príkaz na vykonanie príkazov SQL a vytvorenie všetkých tabuliek v databáze, ktoré sú definované v modely.py spis.

$ python3 spravovať.py migrovať

Upraviť obsah admin.py súbor s nasledujúcim obsahom. Tu, zamestnanec trieda modelov je registrovaná pomocou register () metóda zobrazenia evidencia zamestnancov tabuľky na administračnom paneli Django.

admin.py

# Importovať modul správcu
od djanga.sk prispieť import
# Importovať model zamestnanca
od .modely importovať zamestnanec
# Zaregistrujte model zamestnanca
admin.stránky.registrovať sa (zamestnanec)

Spustením nasledujúcej adresy URL otvorte prihlasovaciu stránku správcu Django. Zadajte platné používateľské meno a heslo na otvorenie Panel správy Django pre prístup k databázovým tabuľkám.

Vložte dva alebo viac záznamov o zamestnancoch, aby sa filter použil na údaje. Tu je vložených päť záznamov.

Vytvorte Vyhľadávanie.html súbor vo vnútri filterapp / šablóny / priečinok s nasledujúcim skriptom. Údaje z zamestnanec tabuľka sa zobrazí v tomto súbore šablón. pre slučka slúži na čítanie obsahu súboru zoznam_objektov premenná, ktorá sa odovzdá zo súboru zobrazenia. The meno, príspevok, a oddelenie hodnoty zamestnancov tabuľka sa zobrazí pomocou zoznamu.

Vyhľadávanie.html

<br>Výukový program pre filter Django<br>

Zoznam zamestnancov



    % pre emp v zozname_objektov%

  1. emp.názov (emp.príspevok)


    emp.oddelenie oddelenie



  2. % endfor%

Otvor názory.py súbor z filterapp priečinok a upravte obsah súboru pomocou nasledujúceho skriptu. Názvy modelov a šablón sú definované v skripte.

názory.py

# Importovať modul ListView
od djanga.názory.všeobecný import ListView
# Importovať modul zamestnancov
od .modely importovať zamestnanec
# Import Q modulu
od djanga.db.modely importovať Q
# Definujte triedu pre filtrovanie údajov
trieda SearchEmployee (ListView):
# Definujte model
model = zamestnanec
# Definujte šablónu
template_name = 'hľadať.html '

Upraviť obsah adresy URL.py súbor s nasledujúcim obsahom. V scenári sasearchEmp"cesta je definovaná na volanie Zamestnanec vo Vyhľadávaní.as_view () metóda, ktorá odošle všetky údaje a filtrované údaje z zamestnancov tabuľku do súboru šablóny.

adresy URL.py

# Importovať modul správcu
od djanga.sk prispieť import
# Importovať cestu a zahrnúť modul
od djanga.cesta importu adries URL, zahrnúť
# Importovať modul SearchEmployee
z filterapp.pohľady importovať SearchEmployee
urlpatterns = [
# Definujte cestu pre administrátora
cesta ('admin /', admin.stránky.adresy URL),
# Definujte cestu pre vyhľadávanie
cesta ('searchEmp /', SearchEmployee.as_view ()),
]

Nasledujúci výstup sa zobrazí bez použitia filtrovania pre nasledujúcu adresu URL.

http: // localhost: 8000 / SerachEmp

Filtrovanie údajov jednoduchým filtrovaním

Pridajte nasledujúci riadok na koniec súboru názory.py súbor na filtrovanie záznamov zamestnancov tabuľka, kde je hodnota príspevok pole jeÚčtovník„.

# Použiť základné filtrovanie
queryset = Zamestnanec.predmety.filter (príspevok = 'Účtovník')

Po použití základného filtrovania sa zobrazí nasledujúci výstup.

Filtrovanie údajov pomocou viacerých polí

Pridajte nasledujúci riadok na koniec súboru názory.py súbor na filtrovanie záznamov zamestnancov tabuľka, kde je hodnota oddelenie pole jeHT„a e-mail pole je „[chránený e-mailom]“.

# Použiť filtrovanie s viacerými poľami
queryset = Zamestnanec.predmety.filter (department = 'HR', email = '[email protected]')

Po použití viacnásobného filtrovania sa objaví nasledujúci výstup.

Filtrovanie údajov pomocou Q Object

Pridajte nasledujúci riadok na koniec súboru názory.py súbor na filtrovanie záznamov zamestnancov tabuľka, kde je hodnota príspevok pole jeManažér"alebo hodnota oddelenie pole jePredaj„.

# Použite filtrovanie pomocou Q objektov
queryset = Zamestnanec.predmety.filter (Q (post = 'Manager') | Q (department = 'Sales')))

Po použití filtrovania objektov Q sa objaví nasledujúci výstup.

Filtrujte údaje pomocou reťazenia filtra

Pridajte nasledujúci riadok na koniec súboru názory.py súbor na filtrovanie záznamov zamestnancov tabuľka, kde je hodnota oddelenie pole sa skontroluje ako prvé a ak vráti hodnotu true, potom hodnota názov pole bude zaškrtnuté.

# Použite filtrovanie reťazením
queryset = Zamestnanec.predmety.filter (oddelenie = 'HR').filter (meno = 'Mehrab Hossain')

Po použití reťazenia filtra sa objaví nasledujúci výstup.

Záver

Dáta je možné v Djangu filtrovať mnohými spôsobmi na základe požiadaviek aplikácie. V tomto výučbe sme vysvetlili štyri rôzne spôsoby filtrovania, aby ste pochopili základy filtrovania Django. Jedná sa o jednoduché filtrovanie, viacnásobné filtrovanie, filtrovanie pomocou objektu Q a filtrovanie reťazcov.

Ako zmeniť ľavé a pravé tlačidlo myši na počítači so systémom Windows 10
Je úplnou normou, že všetky zariadenia počítačových myší sú ergonomicky navrhnuté pre pravákov. Existujú však dostupné myšacie zariadenia, ktoré sú šp...
Napodobňovanie kliknutí myšou vznášaním sa pomocou myši bez myši vo Windows 10
Používanie myši alebo klávesnice v nesprávnom postoji k nadmernému používaniu môže mať za následok veľa zdravotných problémov vrátane napätia, syndróm...
Pridajte gestá myši do systému Windows 10 pomocou týchto bezplatných nástrojov
V posledných rokoch sa počítače a operačné systémy veľmi vyvinuli. Boli časy, keď používatelia museli prechádzať správcami súborov pomocou príkazov. R...