Hvordan bruke QuerySet i Django

Hvordan bruke QuerySet i Django
De fleste av webapplikasjonene implementeres med databasen nå. QuerySet brukes i Django -applikasjonen for å hente poster ved å filtrere eller skive eller bestille databasetabellen uten å endre de originale dataene. Modellen brukte Django for å lage tabellen i databasen. Så kunnskapen om å bruke modellen i Django er nødvendig for å forstå bruken av spørringssett. Hovedfunksjonen til spørringssettet er å iterere postene til databasetabeller ved å konvertere dem til SQL -spørsmål. Det kan brukes fra Python -kommandolinjen eller ved å skrive Python -skriptet for å vise nettleserens utgang. Bruken av QuerySet for å hente data fra en databasetabell på forskjellige måter er blitt forklart i denne opplæringen.

Forutsetninger:

Før du øver skriptet til denne opplæringen, 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 å sjekke at serveren fungerer som den skal eller ikke.

Sett opp en Django -app:

Kjør følgende kommando for å opprette en Django -app som heter QueryApp.

$ Python3 Administrer.PY StartApp QueryApp

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 Administrer.Py CreateSuperuser

Legg til appnavnet i Installert_app del av Innstillinger.py fil.

Installert_apps = [
..
'QueryApp'
]

Opprett en mappe som heter Maler inne i QueryApp mappe og angi malens Plasseringen av appen i Maler del av Innstillinger.py fil.

Maler = [

.. .
'Dirs': ['/home/fahmida/django_pro/queryapp/maler'],
.. .
,
]

Lag en modell for databasetabellen:

Åpne modeller.py fil fra QueryApp mappe og legg til følgende skript for å definere strukturen til Produkter bord. Produkt Klasse er definert for å lage en tabell som heter Produkter med Navn, type, merkevare, og pris Enger. Her, Navn, type, og merke Felt vil lagre karakterdata, og pris Felt vil lagre heltalldataene.

modeller.py

# Importer modeller modul
Fra Django.DB importmodeller
# Definer klasse for å lage produkttabell
Klasseprodukt (modeller.Modell):
Navn = modeller.Charfield (max_length = 100)
type = modeller.Charfield (max_length = 30)
merke = modeller.Charfield (Max_Length = 50)
Pris = modeller.Heltallfield ()

Kjør Makemigrasjoner Kommando for å lage en ny migrasjon basert på endringene som er gjort av modellene.

$ Python3 Administrer.PY Makemigrations QueryApp

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

$ Python3 Administrer.py migrerer

Endre innholdet i admin.py fil med følgende innhold. Her, modellenes produktklass er registrert ved å bruke registrere() metode for å vise Produkter Tabeller i Django Administration Dashboard.

admin.py

# Importer administratormodul
Fra Django.bidra importadministrator
# Importer produktmodell
fra .Modeller importerer produkt
# Registrer produktmodell
admin.nettstedet.Register (produkt)

Opprett en malfil som heter produktliste.html inne i queryApp/maler/ med følgende skript. Dette skriptet vil vise alle data om Produkter Tabell i tabellform med en søkeboks. Brukeren vil kunne søke i de spesielle postene fra produkttabellen ved å bruke søkeskjemaet. til Loop brukes i skriptet for å iterere dataene som er ført fra utsikt.py fil.

produktliste.html



<br>Django QuerySet Tutorial<br>



Søker produkt



% csrf_token %
Søkeprodukt:







% for produkt i objekt_list %



% endfor %
IdNavnMerkePris
produkt.id produkt.Navn produkt.merkestyle = "text-align: rett"> $ produkt.pris



Endre innholdet i utsikt.py fil med følgende skript. Modell- og malnavnene er definert i Produktliste klasse. get_queryset () Klassemetoden er definert i skriptet for å filtrere dataene basert på innholdet som er sendt inn av søkeboksen til malen. Produkt.objekter.alle() metoden returnerer alle poster av Produkter bord. be om.FÅ.nøkler () Metoden brukes i skriptet for å sjekke alle data sendes inn av søkeskjemaet. Hvis denne metoden kommer tilbake ekte, og så be om.FÅ.få ('src') Metoden brukes til å sjekke den innsendte verdien er tom eller ikke. Hvis denne metoden returnerer en ikke-tom verdi, vil verdien lagres i variabelen, nøkkelord, og det vil bli brukt til å filtrere dataene basert på merke og type felt fra Produkter bord.

utsikt.py

# Import ListView -modulen
Fra Django.utsikt.Generisk import ListView
# Importer produktmodul
fra .Modeller importerer produkt
# Importer Q -modul
Fra Django.db.Modeller importerer q
# Definer klasse for spørring av data
Klasseproduktliste (ListView):
# Definer modell
modell = produkt
# Definer mal
Template_name = 'Produktliste.html '
def get_queryset (selv):
# Angi standard spørringssett
QuerySet = Produkt.objekter.alle()
# Kontroller skjemaverdien er sendt inn eller ikke
Hvis selv.be om.FÅ.Keys ():
# Kontroller søkeordet
Hvis selv.be om.FÅ.få ('src') != ":
nøkkelord = selv.be om.FÅ.få ('src')
# Angi spørringssettet basert på søkeord
QuerySet = Produkt.objekter.Filter (Q (merke = nøkkelord.Capitalize ()) | Q (type = nøkkelord.Capitalize ())))
Returner spørringssett

Endre innholdet i URLS.py fil med følgende skript. I manuset, 'SearchPro/'bane er definert for å ringe Produktliste.as_view () metode som vil sende alle data og filtrerte data fra Produkter Tabell til malfilen.

URLS.py

# Importer administratormodul
Fra Django.bidra importadministrator
# Importer bane og inkluder modul
Fra Django.URLS importerer bane
# Import SearchEmployee Module
Fra QueryApp.Visninger importerer produktliste
urlpatterns = [
# Definer banen for admin
bane ('admin/', admin.nettstedet.URL),
# Definer banen for å søke produkt
Sti ('SearchPro/', produktliste.as_view ()),

Legg til poster i tabellen:

Åpne Django -administrasjonssiden og legg til noen poster i Produkter Tabell for å bruke spørringssettet på da. Her har fem poster blitt satt inn.

Alle poster over produktene med søkefeltet vises i nettleseren etter å ha utført følgende URL.

http: // localhost: 8000/searchpro


Alle sjampoproduktene som vises hvis produkttypen, 'sjampo'Blir søkt i søkeboksen.

Melkepulverproduktene av den friske Merket vises hvis produktmerket, 'fersk'Blir søkt i søkeboksen.

Konklusjon:

Måten å filtrere dataene til en enkel databasetabell ved å bruke QuerySet har forklart i denne opplæringen. Dataene kan filtreres på forskjellige måter. Leserne vil forstå ved hjelp av et spørringssett for å filtrere eller søke i nettleseren etter å ha lest denne opplæringen.