Modeller och migreringar
Definiera och migrera databasen
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.
CharFieldför kort text (krävermax_length)TextFieldför lång textIntegerField,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.pymed typade fält - Django lägger automatiskt till en primärnyckel med namnet
id ForeignKeylänkar modeller;on_deleteanger kaskadbeteendetmakemigrationsföljt avmigratesynkroniserar databasenModel.objectsfrågar efter data
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
- Projekt och appar
- Modeller och migreringar
- Vyer och URL:er
- Django Admin