Kaltaisesi lukijat auttavat tukemaan MUO: ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion.
Tietokantasuhde kuvaa eri tietokantataulukoiden välistä yhteyttä. Suhteet määrittävät, kuinka tietoja tallennetaan ja haetaan. Django toimii hyvin relaatiotietokantajärjestelmien (RDBMS) kanssa. Siksi se tukee tietokantataulukkosuhteita.
Suhdetyypit riippuvat sovelluksesi vaatimuksista ja sen mallintamista tiedoista. Hyvät suhteet Django-mallien ja tietokannan välillä parantavat tiedon ylläpitoa. Tämä sisältää kyselyn suorituskyvyn parantamisen ja tietojen päällekkäisyyden vähentämisen.
Voit oppia kuinka Django-tietokantasuhteet vaikuttavat sovellusten suorituskykyyn tutkimalla kolmea pääasiallista suhdetyyppiä.
Tietokantasuhteet
Relaatiotietokantajärjestelmät tukevat kolmenlaisia tietokantasuhteita. Nämä suhteet ovat yksi-moneen, monet-moneen ja yksi-yhteen. Tietokantasuhteen tyyppi vaikuttaa sovelluksesi käyttötapauksiin.
Django mallit edustavat tietokantataulukoita sovelluksessa. Sinun on luotava hyvät suhteet taulukoiden välille hyvän tietokantajärjestelmän luomiseksi. Tietokantasuhteet määrittävät, kuinka tietoja tallennetaan ja esitetään sovelluksessasi.
Aloita tietokantasuhteiden ymmärtämiseksi Django-projektin luominen nimetty Huput. Sovelluksesta tulee naapuruston sosiaalinen verkosto. Se hoitaa eri kaupunginosien sosiaalista toimintaa, turvallisuutta ja yrityksiä.
Asukkaat voivat rekisteröityä, kirjautua sisään ja luoda profiileja. He voivat myös luoda julkaisuja ja yritysmainoksia kaikkien nähtäville.
Aloita luomalla tietokanta, joka tallentaa kaikki naapuruston tiedot. Sitten luot profiili-, naapuruus-, yritys- ja viestimallit. Mallien luomiseksi sinun on määritettävä tietokantataulukoiden tarvitsema suhde.
Yksittäinen tietokantasuhde
Yksi-yhteen-suhde tarkoittaa, että Django-mallin tietue liittyy toiseen tietueeseen toisessa mallissa. Nämä kaksi tietuetta riippuvat toisistaan. Tässä tapauksessa Profiilin malli riippuu Käyttäjämalli asukasprofiilien luomiseen.
Jokaiselle sovellukseen rekisteröidylle asukkaalle voi siis olla vain yksi profiili. Ilman käyttäjää ei myöskään voi olla profiilia.
alkaen django.db tuonti mallit
alkaendjango.contrib.auth.mallejatuontiKäyttäjäluokkaaProfiili(mallit. Malli):
käyttäjä = mallit. OneToOneField (käyttäjä, on_delete=mallit. CASCADE, liittyvä_nimi='profiili')
nimi = mallit. CharField (max_length=80, tyhjä=Totta)
bio = mallit. Tekstikenttä (max_length=254, tyhjä=Totta)
profile_picture = CloudinaryField('profiilikuva', oletus='oletus.png')
sijainti = mallit. CharField (max_length=50, tyhjä=Totta, tyhjä=Totta)
sähköposti = mallit. Sähköpostikenttä(tyhjä=Totta)
def__str__(itse):
palata f'{itse.user.username} profiili"
Djangon käyttäjämalli on Djangon sisäänrakennettu todennusmalli. Sinun ei tarvitse luoda mallia sille. Sen sijaan tuo se osoitteesta django.contrib.auth. The OneToOneField() päällä Profiilin malli määrittelee kahdenkeskisen suhteen.
The on_delete=mallit. RYÖPYTÄ argumentti estää yhden näistä tietueista poistamisen. Sinun on poistettava tietueet molemmista taulukoista.
Voit käyttää Django-järjestelmänvalvojan käyttöliittymää visualisoidaksesi suhteen sovelluksessasi. Kirjautuaksesi Django adminiin, sinun on rekisteröidyttävä admin-käyttäjäksi, joka tunnetaan nimellä a superkäyttäjä.
Luo superkäyttäjä suorittamalla seuraava komento päätteessä:
pythonhallita.pyluo superkäyttäjä
Näyttöön tulee kehote antaa käyttäjätunnus, sähköpostiosoite ja salasana. Kun olet tehnyt niin, käynnistä palvelin.
Avaa järjestelmänvalvojasivu selaimessa URL-osoitteen avulla http://127.0.0.1:8000/admin.
Näet järjestelmänvalvojan sivun, jossa voit kirjautua sisään aiemmin luomillasi tunnuksilla. Kun olet kirjautunut sisään, näet ryhmät ja Käyttäjät esineitä. Django-todennuskehys hallitsee näitä kahta mallia. Alareunassa näet Profiilin malli.
Avaa Profiili malli ja jatka profiilin lisäämistä. Näet sen näyttävän seuraavalta:
Huomaa, että sinulla on mahdollisuus luoda profiili käyttäjälle. OneToOneField()-tietotyypin avulla voit luoda profiileja todennetuille käyttäjille. Näin sovellus hallinnoi kahdenkeskisiä suhteita.
Yksi-moneen suhteet
Yksi moniin -suhde tarkoittaa, että mallin yksi tietue liittyy useisiin toisen mallin tietueisiin. Sitä kutsutaan myös monen yhteen -suhteeksi.
Sinun tapauksessasi yksi järjestelmänvalvoja voi luoda useita kaupunginosia. Mutta jokainen naapurusto voi kuulua vain yhdelle järjestelmänvalvojalle. Voit käyttää ForeignKey-tietotyyppiä tällaisen suhteen määrittämiseen.
Djangossa on sisäänrakennettu järjestelmänvalvojan käyttöliittymä. Sinun ei tarvitse luoda mallia sille. Järjestelmänvalvojalla on oikeus hallita sisältöä ja visualisoida sovellusta hallintapaneelista.
Mallissa, johon mahtuu monia levyjä, on ForeignKey. Se määrittelee suhteen yksi-moneen. Alla oleva koodi näyttää, mihin avain asetetaan.
luokkaanaapurustossa(mallit. Malli):
admin = mallit. ForeignKey("Profiili", on_delete=mallit. CASCADE, liittyvä_nimi='huppu')
nimi = mallit. CharField (max_length=50)
sijainti = mallit. CharField (max_length=60)
hood_logo = CloudinaryField('hood_logo', oletus='oletus.png')
kuvaus = mallit. Tekstikenttä()
health_tell = mallit. Kokonaislukukenttä(tyhjä=Totta, tyhjä=Totta)
poliisin_numero = mallit. Kokonaislukukenttä(tyhjä=Totta, tyhjä=Totta)
Count = mallit. Kokonaislukukenttä(tyhjä=Totta, tyhjä=Totta)
def__str__(itse):
palata f'{itse.name} huppu'
Näet suhteen sovelluksessa kuvan osoittamalla tavalla:
The Naapuruus mallilla on nyt järjestelmänvalvoja. Jotta kuka tahansa voi luoda naapuruston, hänellä on oltava järjestelmänvalvojan oikeudet. Ja yhdellä naapurustolla ei voi olla montaa ylläpitäjää.
Monien väliset tietokantasuhteet
Monien välisissä suhteissa monet tietueet yhdessä mallissa liittyvät muihin toisessa mallissa. Esimerkiksi, Lähettää ja Liiketoimintaa malleissa voi olla useita tietueita toisistaan. Käyttäjät voivat tehdä viesteissään useita yritysmainoksia ja päinvastoin.
Useista moneen -suhteiden luominen voi kuitenkin johtaa epätarkkoihin tietoihin. Muissa kehyksissä sinun on luotava uusi taulukko yhdistääksesi kaksi taulukkoa.
Djangolla on tähän ratkaisu. Kun käytät useista moneen -kenttää, se luo uuden taulukon, joka yhdistää kaksi taulukkoa. Voit laittaa useista moneen -kentän jompaankumpaan malliin, mutta sen ei pitäisi olla molemmissa malleissa.
luokkaaLähettää(mallit. Malli):
otsikko = mallit. CharField (max_length=120, tyhjä=Totta)
post = mallit. Tekstikenttä()
päivämäärä = mallit. DateTimeField (auto_now_add=Totta)
käyttäjä = mallit. ForeignKey (profiili, on_delete=mallit. CASCADE, liittyvä_nimi='post_owner')
huppu = mallit. ForeignKey (NeighbourHood, on_delete=mallit. CASCADE, liittyvä_nimi='hood_post')
liiketoiminta = mallit. ManyToMonyField (Business)
def__str__(itse):
palata f'{itse.title} viesti
Nyt kun katsot Lähettää hallintapaneelin mallissa, voit liittää useita yrityksiä yhteen viestiin.
Django yksinkertaistaa tietokantasuhteita
Sovelluksessasi käyttämäsi tietokannan tyyppi määrittää, kuinka tietoja hyödynnetään. Djangossa on kattava järjestelmä, joka tekee relaatiotietokantojen yhdistämisestä ja käyttämisestä helppoa.
Django-ominaisuuksien avulla on helppoa tallentaa ja hakea tietoja liittyvistä taulukoista. Siinä on sisäänrakennetut sovellusliittymät, jotka muodostavat yhteyden ja luovat tietokantasuhteita sovelluksellesi.
Tietokantasuhteet määrittävät sovelluksesi toiminnan. Riippuu sinusta, käytätkö yksi-yhteen-, yksi-moneen- vai useista moneen -suhteita.
Djangon avulla voit määrittää ja testata ominaisuuksia rikkomatta sovellustasi. Käytä Djangoa tietokantajärjestelmien suojaamiseen ja kehittäjäkokemuksesi optimointiin.