Hvordan bruke bulk_create i django?

Hvordan bruke bulk_create i django?

Django Framework kan brukes til å opprette en webapplikasjon med en database ved å skrive skript i modeller.py og utsikt.py Filer av Django -appen. Dataene kan settes inn i databasetabellene ved å bruke Django Administration Dashboard eller ved å skrive et skript i utsikt.py fil. Django Administration Dashboard krever pålogging for en autentisert bruker for å få tilgang til tabellene til databasen. Enkelt eller flere poster kan settes inn i databasetabellene ved å skrive et skript. bulk_create () Metoden er en av måtene å sette inn flere poster i databasetabellen. Hvordan i bulk_create () Metoden brukes til å sette inn flere data i en Django -databasetabell vil bli vist i denne opplæringen.

Forutsetninger:

Før du øver på 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 BookApp.

$ Python3 Administrer.PY StartApp BookApp

Kjør følgende kommando for å opprette brukeren for å få tilgang til Django -databasen. Hvis du allerede har opprettet en, trenger du ikke kjøre kommandoen.

$ Python3 Administrer.Py CreateSuperuser

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

Installert_apps = [
..
'BookApp'
]

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

Maler = [

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

Lag en modell for databasetabellen:

Åpne modeller.py fil fra BookApp mappe og legg til følgende skript for å definere strukturen til bøker bord. Bok Klasse er definert for å lage et bord som heter bøker med tittel, forfatter, pris, og publisert_år Enger. I følge manuset, tittel og forfatter Felt vil lagre karakterdata, og pris og publisert_år Felt vil lagre heltalldataene. Her, The tittel Feltet er definert med det unike attributtet. Det betyr at verdien av tittel Feltet vil ikke godta noen duplikatdata.

modeller.py

# Importer modeller modul
Fra Django.DB importmodeller
# Definer bokklassen for Books -tabellen
Klassebok (modeller.Modell):
tittel = modeller.Charfield (max_length = 100, unik = sant)
Forfatter = modeller.Charfield (max_length = 100)
Pris = modeller.Heltallfield ()
publisert_year = modeller.Heltallfield ()

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

$ Python3 Administrer.PY Makemigrations BookApp

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 er bokklassen til modellene registrert ved hjelp av registrere() metode for å vise bøker Tabeller i Django Administration Dashboard.

admin.py

# Importer administratormodul
Fra Django.bidra importadministrator
# Importer bokmodell
fra .Modeller importerer bok
# Registrer bokmodellen
admin.nettstedet.Register (bok)

Opprett en malfil som heter Displaybooklist.html inne i BookApp/ Maler/ Folder med følgende skript. Dette skriptet vil vise alle data fra bøker tabell i tabellform. Annet enn det brukes for loop i skriptet for å iterere dataene som er ført fra utsikt.py fil.

Displaybooklist.html



<br>Django bulk_create () tutorial<br>



Python bokliste







% for bok i objekt_list %



% endfor %
IdNavnForfatterPublikasjonsårPris
bok.id bok.tittel bok.forfatterbok.publisert_year$ bok.pris



Endre innholdet i utsikt.py fil med følgende skript. Modell- og malnavnene er definert i BulkInsert klasse. get_queryset () Klassemetoden er definert i skriptet for å returnere alle poster over Books -tabellen. På den andre siden, Bok.objekter.alle() Metoden brukes til å returnere alle poster over Books -tabellen. eksisterer () metoden brukes i skriptet for å sjekke bøker Tabellen er tomt eller ikke. Hvis denne metoden kommer tilbake Falsk Deretter blir fem poster satt inn i bøkertabellen ved hjelp av bulk_create () metode.

utsikt.py

Fra Django.snarveier import gjengivelse
# Import ListView -modulen
Fra Django.utsikt.Generisk import ListView
# Importer bokmodell
fra .Modeller importerer bok
# Definer klasse for å sette inn flere data
klasse BulkInsert (ListView):
# Definer modell
modell = bok
# Definer mal
Template_name = 'DisplayBookList.html '
# Les alle eksisterende poster over Books Table
QuerySet = bok.objekter.alle()
# Kontroller at bøketabellen er tomt eller ikke
Hvis spørringssett.eksisterer () == FALSE:
# Sett inn 5 poster i bøketabellen om gangen
Bok.objekter.bulk_create ([
Bok (tittel = 'Python Crash Course, 2. utgave', forfatter = 'Eric Matthes', pris = 15, publisert_år = 2019),
Bok (tittel = 'Automatiser de kjedelige tingene med Python, 2. utgave', forfatter = 'Al Sweigart', pris = 30,
publisert_year = 2019),
Bok (title = 'Learning Python', forfatter = 'Mark Lutz', pris = 15, publisert_year = 2019),
Bok (tittel = 'head first python', forfatter = 'Paul Barry', pris = 45, publisert_year = 2016),
Bok (tittel = 'en byte av python', forfatter = 'Swaroop C h', pris = 15, publisert_year = 2013),
])
# Returner alle poster over Books -tabellen
def get_queryset (selv):
# Angi standard spørringssett
Returbok.objekter.alle()

Endre innholdet i URLS.py fil med følgende skript. I manuset, 'admin/' banen er definert for å åpne Django Administration -dashbordet, og 'Books/' -banen er definert for å kalle BulkInsert.as_view () Metode som vil sette inn fem poster i Books -tabellen og returnere postene til malfilen.

URLS.py

# Importer administratormodul
Fra Django.bidra importadministrator
# Importer bane og inkluder modul
Fra Django.URLS importerer bane
Fra BookApp importvisninger
urlpatterns = [
# Definer banen for admin
bane ('admin/', admin.nettstedet.URL),
bane ('bøker/', visninger.BulkInsert.as_view ()),
]

Åpne Django Administration -dashbordet for å sjekke om dataene er satt inn riktig eller ikke ved å bruke bulk_create () funksjon.

De innsatte postene til bøker Tabellen vises i nettleseren etter å ha utført følgende URL.

http: // localhost: 8000/bøker/

Konklusjon:

Flere poster kan settes inn i Django -databasetabellen på forskjellige måter ved å bruke bulk_create (). En enkel måte å sette inn flere poster i databasetabellen ved å bruke denne metoden ble vist i denne opplæringen for å hjelpe Django -brukere til å forstå logikken bak prosessen.