Modele i migracje
Definiuj bazę danych i przeprowadzaj migracje
Modele i migracje to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.
Modele Django
Model Django to klasa języka Python definiująca strukturę tabeli bazy danych. Każdy atrybut jest polem. Modele znajdują się w pliku models.py aplikacji.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
print('Post model defined')Typy pól
Django udostępnia wiele typów pól, które odpowiadają typom kolumn.
CharFielddo krótkiego tekstu (wymagamax_length)TextFielddo długiego tekstuIntegerField,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')Domyślny klucz główny
Django automatycznie dodaje do każdego modelu automatycznie zwiększany klucz główny id, dlatego rzadko trzeba definiować go samodzielnie.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
# 'id' is added automatically
print('id field is automatic')Opcje pól
Pola przyjmują opcje takie jak default, null, blank i unique, które określają ich działanie i sposób walidacji.
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')Daty
DateTimeField(auto_now_add=True) zapisuje moment utworzenia wiersza. auto_now=True aktualizuje wartość przy każdym zapisie.
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')Relacje
Połącz modele za pomocą ForeignKey, aby utworzyć relację jeden-do-wielu. on_delete informuje Django, co zrobić po usunięciu wskazywanego wiersza.
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')Czym są migracje?
Migracje to mechanizm Django służący do przekształcania zmian w modelach w zmiany schematu bazy danych. Są odpowiednikiem kontroli wersji dla bazy danych.
# Migrations record schema changes over time
# so the database matches your models
print('Migrations track schema changes')makemigrations
python manage.py makemigrations analizuje modele i generuje pliki migracji opisujące wprowadzone zmiany.
# python manage.py makemigrations
# -> blog/migrations/0001_initial.py
print('makemigrations writes migration files')migrate
python manage.py migrate stosuje oczekujące migracje do bazy danych, tworząc lub modyfikując tabele.
# python manage.py migrate
# -> Applying blog.0001_initial... OK
print('migrate applies changes to the DB')Przebieg migracji
Cykl wygląda następująco: edytuj plik models.py, uruchom makemigrations, a następnie uruchom migrate. Powtarzaj te kroki za każdym razem, gdy zmienisz modele.
# 1. Change models.py
# 2. python manage.py makemigrations
# 3. python manage.py migrate
print('Edit, make, migrate')Wykonywanie zapytań do modeli
Każdy model otrzymuje menedżera o nazwie objects, który służy do wykonywania zapytań: Post.objects.all(), .filter(), .get() i .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')Szybki sprawdzian
Sprawdź swoją wiedzę na temat migracji.
Podsumowanie
Zdefiniowałeś modele i przeprowadziłeś ich migrację.
- Modele to klasy w pliku
models.py, zawierające pola o określonych typach - Django automatycznie dodaje klucz główny
id ForeignKeyłączy modele, aon_deleteokreśla działanie kaskadowemakemigrations, a następniemigratesynchronizują bazę danychModel.objectssłuży do wykonywania zapytań na danych
Ucz się Python dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 76
- Lekcje
- 320
Często zadawane pytania
Czy lekcja „Modele i migracje” jest bezpłatna?
Tak — pełny tekst „Modele i migracje” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Modele i migracje”?
Definiuj bazę danych i przeprowadzaj migracje Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Python Academy?
Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Modele i migracje”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?
Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Projekty i aplikacje
- Modele i migracje
- Widoki i adresy URL
- Panel administracyjny Django