Python

Kuidas Djangos andmeid filtreerida?

Kuidas Djangos andmeid filtreerida?
See on väga levinud nõue, et veebirakendus kuvab andmeid veebilehel vastavalt kasutaja huvile. Rakenduse otsingufunktsioon muudab selle kasutajasõbralikumaks.  Django raamistikul on sisseehitatud filter () meetod andmebaasi tabelite andmete filtreerimiseks. Tabel võib sisaldada palju kirjeid ja mõnikord on teatud kriteeriumide põhjal vaja kindlaks määrata mõned konkreetsed andmed. Selle ülesande kasutamine muutub lihtsamaks filter () meetodit erinevalt. Kuidas andmebaasitabeli andmeid filtreerimismeetodi abil filtreerida saab neljal erineval viisil, käsitletakse selles õpetuses.

Eeldused

Enne selle õpetuse näidete kasutamist peate täitma järgmised ülesanded:

  1. Installige Django versioon 3+ Ubuntu 20+ (eelistatult)
  2. Looge Django projekt
  3. Käivitage Django server, et kontrollida, kas server töötab korralikult või mitte.

Seadistage Django rakendus

A. Django nimelise rakenduse loomiseks käivitage järgmine käsk filterapp.

$ python3 hallata.py startapp filterapp

B. Käivitage järgmine käsk, et luua kasutaja Django andmebaasile juurdepääsuks. Kui olete kasutaja varem loonud, ei pea seda käsku käivitama.

$ python3 hallata.py loob ülikasutaja

C. Lisage rakenduse nimi rakendusse INSTALLED_APP osa py faili.

INSTALLED_APPS = [

'filterapp'
]

D. Looge kaust nimega mallid sees filterapp kaust ja määrake malli omad rakenduse asukoht MALLID osa py faili.

MALLID = [

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

Looge andmebaasitabeli mudel

Ava mudelid.py fail failist filterapp kaust ja lisage järgmise skripti struktuuri määratlemiseks töötajad tabelid. Töötaja klass on määratletud nimega tabeli loomiseks töötajad koos nimi, postitus, e-post, osakond, ja liitumise kuupäev väljad. Siin, nimi, postitus, ja osakond väljad talletavad märgiandmed, e-post väli salvestab e-posti aadressi ja liitumise kuupäev väli salvestab kuupäeva andmed.

mudelid.py

# Mudelite importimise moodul
alates django.db impordimudelid
# Määratlege töötajate tabeli loomiseks klass
klassi töötaja (mudelid.Mudel):
nimi = mudelid.CharField (max_pikkus = 50)
post = mudelid.CharField (max_pikkus = 40)
email = mudelid.EmailField ()
osakond = mudelid.CharField (max_pikkus = 30)
liitumise kuupäev = mudelid.Kuupäevaväli ()

Käivitage makemigratsioonid käsk luua uus ränne mudelite tehtud muudatuste põhjal.

$ python3 hallata.py makemigrations filterapp

Käivitage rändama käsk SQL-i käskude käivitamiseks ja kõigi andmebaasis määratletud tabelite loomiseks mudelid.py faili.

$ python3 hallata.py rännata

Muutke sisu admin.py järgmise sisuga fail. Siin, töötaja mudelite klass on registreeritud register () meetod töötajate arvestus tabelid Django halduse juhtpaneelil.

admin.py

# Impordi administraatori moodul
alates django.kaastöö impordi admin
# Töötaja mudeli importimine
alates .mudelid impordivad Töötaja
# Registreerige töötaja mudel
admin.sait.register (töötaja)

Django administraatori sisselogimislehe avamiseks käivitage järgmine URL. Andke avamiseks kehtiv kasutajanimi ja parool Django administratsiooni juhtpaneel andmebaasitabelitele juurdepääsuks.

Andmetele filtri rakendamiseks sisestage kaks või enam töötaja kirjet. Siia lisatakse viis kirjet.

Looge otsing.HTML faili sees filterapp / templates / kaust järgmise skriptiga. Andmed töötaja Selles mallifailis kuvatakse tabel. eest silmust kasutatakse objekti_loend muutuja, mis edastatakse vaatefailist. The nimi, postitus, ja osakond väärtused töötajad tabelit kuvatakse loendi abil.

otsing.HTML

<br>Django filtri õpetus<br>

Töötajate nimekiri



    % emp-i jaoks objekti_loendis%

  1. emp.nimi (emp.postitus)


    emp.osakond osakond



  2. % endfor%

Ava vaated.py fail failist filterapp kausta ja muutke faili sisu järgmise skriptiga. Mudeli ja malli nimed on määratletud skriptis.

vaated.py

# Import ListView moodul
alates django.vaated.üldine import ListView
# Töötajate mooduli importimine
alates .mudelid impordivad Töötaja
# Impordi Q moodul
alates django.db.mudelid impordivad Q
# Määratlege andmete filtreerimise klass
klassi otsingutöötaja (ListView):
# Määratlege mudel
mudel = Töötaja
# Määra mall
malli_nimi = 'otsing.html '

Muutke sisu URL-id.py järgmise sisuga fail. Skriptis onsearchEmp'on määratletud tee kutsumiseks Töötaja otsimine.as_view () meetod, mis saadab kõik andmed ja filtreeritud andmed töötajad tabel malli faili.

URL-id.py

# Impordi administraatori moodul
alates django.kaastöö impordi admin
# Impordi tee ja kaasake moodul
alates django.URL-ide importimise tee, kaasata
# Impordi SearchEmployee moodul
filtrirakendusest.vaated impordivad SearchEmployee
urlpatterns = [
# Määrake administraatori tee
tee ('admin /', admin.sait.URL-id),
# Määrake otsingu tee
tee ('searchEmp /', SearchEmployee.as_view ()),
]

Järgmine väljund ilmub ilma järgmise URL-i jaoks filtrit rakendamata.

http: // localhost: 8000 / SerachEmp

Andmete filtreerimine lihtsa filtreerimise abil

Lisage järgmise rea lõppu vaated.py faili, et filtreerida töötajad tabel, kus väärtus postitus väli on 'Raamatupidaja".

# Rakenda põhifiltrit
queryset = Töötaja.objektid.filter (post = 'Raamatupidaja')

Pärast põhifiltreerimist rakendatakse järgmist väljundit.

Andmete filtreerimine mitme väljaga

Lisage järgmise rea lõppu vaated.py faili, et filtreerida töötajad tabel, kus väärtus osakond väli on 'HT"ja e-kiri väli on '[meiliga kaitstud]'.

# Rakenda filtreerimist mitme väljaga
queryset = Töötaja.objektid.filter (osakond = 'HR', e-post = '[meiliga kaitstud]')

Järgmine väljund ilmub pärast mitme filtreerimise rakendamist.

Andmete filtreerimine Q-objektiga

Lisage järgmise rea lõppu vaated.py faili, et filtreerida töötajad tabel, kus väärtus postitus väli on 'Juhataja"või väärtus osakond väli on 'Müük".

# Rakendage filtreerimine Q-objektide abil
queryset = Töötaja.objektid.filter (Q (post = 'Juht') | Q (osakond = 'Müük'))

Järgmine väljund ilmub pärast Q-objekti filtreerimise rakendamist.

Andmete filtreerimine filtreerimisahelate abil

Lisage järgmise rea lõppu vaated.py faili, et filtreerida töötajad tabel, kus väärtus osakond Kõigepealt kontrollitakse välja ja kui see vastab väärtusele true, siis väärtus nimi väli kontrollitakse.

# Rakendage filtreerimine aheldamise abil
queryset = Töötaja.objektid.filter (osakond = 'HR').filter (nimi = 'Mehrab Hossain')

Pärast filtreerimisahela rakendamist kuvatakse järgmine väljund.

Järeldus

Andmeid saab Djangos filtreerida mitmel viisil, lähtudes rakenduse nõuetest. Selles õpetuses selgitati nelja erinevat filtreerimisviisi, et mõista Django filtreerimise põhitõdesid. Need on lihtne filtreerimine, mitmekordne filtreerimine, Q-objektiga filtreerimine ja filtreerimine ahelasse.

WinMouse võimaldab teil kohandada ja parandada hiirekursori liikumist Windowsi arvutis
Kui soovite oma hiirekursori vaikefunktsioone paremaks muuta, kasutage vabavara WinMouse. See lisab rohkem funktsioone, mis aitavad teil alandlikust h...
Hiire vasakklõps nupp ei tööta Windows 10-s
Kui kasutate oma sülearvuti või lauaarvutiga spetsiaalset hiirt, kuid hiire vasakklõps nupp ei tööta mingil põhjusel operatsioonisüsteemis Windows 10/...
Kursor hüppab või liigub juhuslikult Windows 10-s kirjutamise ajal
Kui leiate, et hiire kursor hüppab või liigub Windowsi sülearvutisse või arvutisse kirjutades automaatselt, juhuslikult, võivad mõned neist soovituste...