Python Academy · Oppitunti

Mallit ja migraatiot

Määritä ja migroi tietokanta

Oppitunti 2/413 vaihetta

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ä.

  • CharField lyhyelle tekstille (vaatii asetuksen max_length)
  • TextField pitkälle tekstille
  • 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')

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.py luokkia, joissa on tyypitetyt kentät
  • Django lisää automaattisesti id-pääavaimen
  • ForeignKey yhdistää malleja ja on_delete määrittää kaskaditoiminnan
  • makemigrations ja sen jälkeen migrate synkronoivat tietokannan
  • Model.objects tekee kyselyjä tiedoista
Aloita maksutta

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

  1. Projektit ja sovellukset
  2. Mallit ja migraatiot
  3. Näkymät ja URL-osoitteet
  4. Django Admin
← Takaisin: Python Academy