Python Academy · Lektion

Modeller och migreringar

Definiera och migrera databasen

Lektion 2 av 413 steg

Modeller och migreringar är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.

Django-modeller

En Django-modell är en Python-klass som definierar strukturen för en databastabell. Varje attribut är ett fält. Modeller finns i en apps models.py.

from django.db import models

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

Fälttyper

Django tillhandahåller många fälttyper som motsvarar kolumntyper.

  • CharField för kort text (kräver max_length)
  • TextField för lång text
  • 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 implicita primärnyckeln

Django lägger automatiskt till en autoinkrementerande primärnyckel med namnet id i varje modell, så du behöver sällan deklarera en själv.

from django.db import models

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

Fältalternativ

Fält accepterar alternativ som default, null, blank och unique för att styra beteende och 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')

Datum

DateTimeField(auto_now_add=True) registrerar när en rad skapades första gången. auto_now=True uppdaterar värdet vid varje sparning.

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')

Relationer

Länka modeller med ForeignKey för en-till-många-relationer. on_delete anger vad Django ska göra när den refererade raden tas bort.

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')

Vad är migreringar?

Migreringar är Djangos sätt att omvandla modelländringar till ändringar i databasschemat. De fungerar som versionshantering för databasen.

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

makemigrations

python manage.py makemigrations granskar dina modeller och skapar migreringsfiler som beskriver ändringarna.

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

migrate

python manage.py migrate tillämpar väntande migreringar på databasen och skapar eller ändrar tabeller.

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

Migreringsflödet

Cykeln är: redigera models.py, kör makemigrations och kör sedan migrate. Upprepa detta varje gång dina modeller ändras.

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

Fråga modeller

Varje modell får en manager med namnet objects för frågor: Post.objects.all(), .filter(), .get() och .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')

Snabbtest

Testa dina kunskaper om migreringar.

Sammanfattning

Du har definierat modeller och migrerat dem.

  • Modeller är klasser i models.py med typade fält
  • Django lägger automatiskt till en primärnyckel med namnet id
  • ForeignKey länkar modeller; on_delete anger kaskadbeteendet
  • makemigrations följt av migrate synkroniserar databasen
  • Model.objects frågar efter data
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”Modeller och migreringar” gratis?

Ja – hela texten till ”Modeller och migreringar” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Modeller och migreringar”?

Definiera och migrera databasen Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Modeller och migreringar”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Projekt och appar
  2. Modeller och migreringar
  3. Vyer och URL:er
  4. Django Admin
← Tillbaka till Python Academy