Python Academy · leksjon

Modeller og migreringer

Definer og migrer databasen

Leksjon 2 av 413 trinn

Modeller og migreringer er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.

Django-modeller

En Django-modell er en Python-klasse som definerer strukturen til en databasetabell. Hvert attributt er et felt. Modeller ligger i en apps models.py.

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
print('Post model defined')

Felttyper

Django tilbyr mange felttyper som tilsvarer kolonnetyper.

  • CharField for kort tekst (krever max_length)
  • TextField for lang tekst
  • IntegerField, BooleanField, DateTimeField
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    views = models.IntegerField(default=0)
print('Fields map to columns')

Den implisitte primærnøkkelen

Django legger automatisk til en autoinnkrementerende id-primærnøkkel i hver modell, så du trenger sjelden å deklarere en selv.

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    # 'id' is added automatically
print('id field is automatic')

Feltalternativer

Felter godtar alternativer som default, null, blank og unique for å styre oppførsel og validering.

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200, unique=True)
    published = models.BooleanField(default=False)
    subtitle = models.CharField(max_length=200, blank=True)
print('Options refine each field')

Datoer

DateTimeField(auto_now_add=True) registrerer når en rad først ble opprettet. auto_now=True oppdaterer verdien ved hver lagring.

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
print('Timestamps set automatically')

Relasjoner

Koble modeller sammen med ForeignKey for en-til-mange-relasjoner. on_delete forteller Django hva som skal skje når den refererte raden slettes.

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)

class Post(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
print('ForeignKey links Post to Author')

Hva er migreringer?

Migreringer er Djangos måte å gjøre modellendringer om til endringer i databaseskjemaet på. De fungerer som versjonskontroll for databasen.

# Migrations record schema changes over time
# so the database matches your models
print('Migrations track schema changes')

makemigrations

python manage.py makemigrations undersøker modellene dine og genererer migreringsfiler som beskriver endringene.

# python manage.py makemigrations
# -> blog/migrations/0001_initial.py
print('makemigrations writes migration files')

migrate

python manage.py migrate bruker ventende migreringer på databasen og oppretter eller endrer tabeller.

# python manage.py migrate
# -> Applying blog.0001_initial... OK
print('migrate applies changes to the DB')

Migreringsarbeidsflyten

Syklusen er: rediger models.py, kjør makemigrations, og kjør deretter migrate. Gjenta dette hver gang modellene dine endres.

# 1. Change models.py
# 2. python manage.py makemigrations
# 3. python manage.py migrate
print('Edit, make, migrate')

Spørre modeller

Hver modell får en manager kalt objects for spørringer: Post.objects.all(), .filter(), .get() og .create().

# Post.objects.all()
# Post.objects.filter(published=True)
# Post.objects.get(id=1)
# Post.objects.create(title='Hello')
print('objects is the query manager')

Hurtigsjekk

Test kunnskapene dine om migreringer.

Oppsummering

Du har definert modeller og migrert dem.

  • Modeller er klasser i models.py med typede felter
  • Django legger til en automatisk id-primærnøkkel
  • ForeignKey kobler modeller sammen; on_delete angir kaskadeoppførselen
  • makemigrations etterfulgt av migrate synkroniserer databasen
  • Model.objects brukes til å spørre dataene
Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
76
Leksjoner
320

Ofte stilte spørsmål

Er leksjonen «Modeller og migreringer» gratis?

Ja – hele teksten i «Modeller og migreringer» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Modeller og migreringer»?

Definer og migrer databasen Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Python Academy?

Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Modeller og migreringer»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?

Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Prosjekter og apper
  2. Modeller og migreringer
  3. Visninger og URL-er
  4. Django-administrasjonen
← Tilbake til Python Academy