Mallit ja migraatiot
Määritä ja migroi tietokanta
Mallit ja migraatiot on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.
Django-mallit
Djangon malli on Python-luokka, joka määrittelee tietokantataulun rakenteen. Jokainen attribuutti on kenttä. Mallit sijaitsevat sovelluksen tiedostossa models.py.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
print('Post model defined')Kenttätyypit
Django tarjoaa monia kenttätyyppejä, jotka vastaavat tietokannan saraketyyppejä.
CharFieldlyhyelle tekstille (vaatii asetuksenmax_length)TextFieldpitkälle tekstilleIntegerField,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')Implisiittinen pääavain
Django lisää jokaiseen malliin automaattisesti kasvavan id-pääavaimen, joten pääavainta tarvitsee harvoin määritellä itse.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
# 'id' is added automatically
print('id field is automatic')Kenttien asetukset
Kentät hyväksyvät asetuksia, kuten default, null, blank ja unique, jotka ohjaavat toimintaa ja kelpoisuustarkistusta.
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')Päivämäärät
DateTimeField(auto_now_add=True) tallentaa ajankohdan, jolloin rivi luotiin ensimmäisen kerran. auto_now=True päivittää arvon jokaisen tallennuksen yhteydessä.
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')Relaatiot
Yhdistäkää mallit ForeignKey-kentällä yksi-moneen-suhdetta varten. on_delete kertoo Djangolle, mitä tehdään, kun viitattu rivi poistetaan.
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')Mitä migraatiot ovat?
Migraatiot ovat Djangon tapa muuntaa mallien muutokset tietokannan skeeman muutoksiksi. Ne toimivat tietokannan versionhallintana.
# Migrations record schema changes over time
# so the database matches your models
print('Migrations track schema changes')makemigrations
python manage.py makemigrations tarkastelee malleja ja luo migraatiotiedostoja, joissa muutokset kuvataan.
# python manage.py makemigrations
# -> blog/migrations/0001_initial.py
print('makemigrations writes migration files')migrate
python manage.py migrate ottaa odottavat migraatiot käyttöön tietokannassa ja luo tai muuttaa tauluja.
# python manage.py migrate
# -> Applying blog.0001_initial... OK
print('migrate applies changes to the DB')Migraatioiden työnkulku
Työnkulku on seuraava: muokatkaa tiedostoa models.py, suorittakaa makemigrations ja suorittakaa sen jälkeen migrate. Toistakaa tämä aina, kun mallinne muuttuvat.
# 1. Change models.py
# 2. python manage.py makemigrations
# 3. python manage.py migrate
print('Edit, make, migrate')Mallien kyselyt
Jokainen malli saa kyselyjä varten hallinnan nimeltä objects: Post.objects.all(), .filter(), .get() ja .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')Pikatarkistus
Testatkaa tietonne migraatioista.
Kertaus
Opitte määrittelemään malleja ja suorittamaan niille migraatiot.
- Mallit ovat tiedoston
models.pyluokkia, joissa on tyypitetyt kentät - Django lisää automaattisesti
id-pääavaimen ForeignKeyyhdistää malleja jaon_deletemäärittää kaskaditoiminnanmakemigrationsja sen jälkeenmigratesynkronoivat tietokannanModel.objectstekee kyselyjä tiedoista
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 320
Usein kysytyt kysymykset
Onko oppitunti ”Mallit ja migraatiot” ilmainen?
Kyllä – oppitunnin ”Mallit ja migraatiot” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Mallit ja migraatiot”?
Määritä ja migroi tietokanta Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Mallit ja migraatiot”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?
Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Projektit ja sovellukset
- Mallit ja migraatiot
- Näkymät ja URL-osoitteet
- Django Admin