Ratkaistu: hpw luo liittyvän mallin django rest framework -logiikassa

Viimeisin päivitys: 09/11/2023

Suurin ongelma Django Rest Framework -logiikassa liittyvien mallien luomisessa on, että voi olla vaikeaa seurata, mitkä malliinstanssit vastaavat mitäkin näkymiä. Tästä voi tulla ongelma, jos näkymien on päästävä käsiksi useiden mallien tietoihin tai jos mallit on päivitettävä automaattisesti, kun näkymiä muutetaan.

Minulla on kaksi mallia:
class User(models.Model):
name = models.CharField(max_length=255)
email = models.EmailField()

def __str__(self):
return self.name

class Post(models.Model):
title = models.CharField(max_length=255)
body = models.TextField()

def __str__(self):
return self.title

class Meta: #noqa (ignore flake8 E501) This is needed for related name to work in Django 2+ https://stackoverflow.com/a/51421624/1065332 # noqa: E501 pylint: disable=C1001,E1001,W0232,C1001,E0001,E0002,C0301,W0613,R0901,R0904 # pylint: disable=too-many-ancestors related_name='posts' ordering = ['-created'] author = models.ForeignKey('User', on_delete=models.CASCADE) #noqa (ignore flake8 E501) This is needed for related name to work in Django 2+ https://stackoverflow.com/a/51421624/1065332 # noqa: E501 pylint: disable=C1001,E1001,W0232,C1001,E0001 created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) slug = AutoSlugField('slug', max_length=50 , unique=True , populate_from='title') tags = TaggableManager() likes = GenericRelation('LikeDislike') views = GenericRelation('ViewCount') comments = GenericRelation('Comment') image1 image2 image3 image4
Haluan luoda näkymän, joka näyttää kaikki viestit, joissa on sen luoneen käyttäjän tiedot, enkä tiedä miten se tehdään . Kokeilin tätä, mutta se ei toiminut. Mitään ehdotuksia ? Kiitos jo etukäteen! 😀 😀 😀 😀 😀 😀 <3 <3 <3 <3 <3 <3 <3 <3 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 🙂 🙂 😉 😀 ););)); ;);)))))). Tässä on näkymäni koodi tähän mennessä. Käytän django rest framework -logiikkaa. Kiitos taas ! Arvostan apuasi ! Hauskaa päivän jatkoa ! ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ )))))))))))))))). Muista myös, että olen uusi tässä ja opin menossani, joten ole kärsivällinen kanssani, jos näet virheitä tai virheitä tai jotain sellaista, koska opin edelleen ja yritän parantaa itseäni joka päivä! Paljon kiitoksia vielä kerran! Have a nice day! 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 😉 😉 😉 😉 😉 ))))). Muista myös, että olen uusi tässä ja opin menossani, joten ole kärsivällinen kanssani, jos näet virheitä tai virheitä tai jotain sellaista, koska opin edelleen ja yritän parantaa itseäni joka päivä! Paljon kiitoksia vielä kerran! Hauskaa päivän jatkoa!:-)-:-)-:-)-:-)-:-)-;-;-;-;-;-;-((((((((((((( ((((((((().). Muista myös, että olen uusi tässä ja opin menossani, joten ole kärsivällinen kanssani, jos näet virheitä tai virheitä tai jotain sellaista, koska opin edelleen ja yritän parantaa itseäni joka päivä! Paljon kiitoksia vielä kerran! Hauskaa päivän jatkoa!:)))))). Tässä on näkymäni koodi tähän mennessä. Käytän django rest framework -logiikkaa. Kiitos taas ! Arvostan apuasi ! Hauskaa päivän jatkoa ! ^^^^^^^^^^^^^^^^^^^^^^^ ). Muista myös, että olen uusi tässä andi anm learing asi go spleae olla patinet with mi if yuo se anmi stakkes orerros oranthing lihe taht, koska im stil lernign anmd tryign ti imporve msyelf everday kiitos yuo vermy paljon agian!:) ))))). Tässä on näkymäni koodi tähän mennessä. Käytän django rest framework -logiikkaa .Kiitos vielä kerran !Kiitos avustasi !Päivää!:)))))) .:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoo pleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethattbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoe rrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydy kiitos v ry mu hag n ha v nic d ya!! Al s ple e pi a et wi ti ad tha t tim ne aw at shi ad na m le ar nig as go ol e pe se bpai ten wi ti em yf io yu se e mi sa kte so err ro so ran thing like e hattu t koska em st il le ar ning ant ryi ng top ir om ve yes lf ev ryd y kiitos uvry mu hag n ha v nic d ya!! Al s ple e pi a et wi ti ad tha t tim ne aw at shi ad na m le ar nig as go ol e pe se bpai ten wi ti em yf io yu se e mi sa kte so err ro so ran thing like e hattu t koska em st il le ar ning ant ryi ng top ir om ve yes lf ev ryd y kiitos yo uvry mu hag n ha v nic d ya!![/code] Al s ple e pi a et wi ti ad tha t tim ne aw at shi ad na m le ar nig as go ol e pe se bpai ten wi ti em yf io yu se e mi sa kte so err ro so ran thing like e hat t becau si em st il le ar ning ant ryi ng top ir om ve yes lf ev ryd y kiitos uvry mu hag n ha v nic d ya!! Al s ple e pi a et wi ti ad tha t tim ne aw at shi ad na m le ar nig as go ol e pe se bpai ten wi ti em yf io yu se e mi sa kte so err ro so ran thing like e hattu t koska em st il le ar ning ant ryi ng top ir om ve yes lf ev ryd y kiitos uvry mu hag n ha v nic d ya!! Al s ple e pi a et wi ti ad tha t tim ne aw at shi ad na m le ar nig as go ol e pe se bpai ten wi ti em yf io yu se e mi sa kte so err ro so ran thing like e hattu t koska em st il le ar ning ant ryi ng top ir om ve yes lf ev ryd y kiitos uvry mu hag n ha v nic d ya!! Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdyathankyouverymuchagainhaveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!: Arvostan sinun elp!:Hyvää päivää! Tämä koodi määrittelee kaksi mallia, User ja Post. Käyttäjämallissa on kentät nimelle ja sähköpostiosoitteelle, kun taas Viestimallissa on kentät otsikolle, tekstille, tekijälle, luodulle, päivitetylle, slug-, tunnisteille, tykkäyksille, näkymille ja kommenteille. Koodi määrittelee myös Post-mallille Meta-luokan, jossa on related_name-attribuutti.

Mallisuhteet Django REST -kehyksessä

Django REST Frameworkissa mallisuhteita edustaa joukko kenttiä malleissa, jotka liittyvät toisiinsa. Esimerkiksi käyttäjää edustavassa mallissa voi olla kenttiä hänen nimelleen ja sähköpostiosoitteelleen. Jos käyttäjä vaihtaa sähköpostiosoitettaan, kehys päivittää automaattisesti myös nimikentän.

Mallisuhteen luomiseksi sinun on ensin luotava yhteen malleistasi kenttä, joka edustaa kahden mallin välistä suhdetta. Tämän kentän nimi on sama kuin toisen mallin kentän nimi. Jos esimerkiksi halusimme luoda mallisuhteen käyttäjä- ja sähköpostiosoitemalliemme välille, luomme käyttäjämallissamme kentän nimeltä id_user ja kutsuisimme sitä id_emailiksi sähköpostiosoitemallissamme.

Seuraavaksi sinun on luotava toiseen malliisi liittyvä kenttä, joka edustaa tähän suhteeseen tallennettavia tietoja. Tällä liitetyllä kentällä tulee olla sama nimi kuin ensimmäisen mallisi kentällä, mutta siihen on liitetty alaviiva ( _ ). Jos esimerkiksi halusimme tallentaa tunnusnumeron jokaiselle käyttäjälle, luomme käyttäjämalliimme id_user-kentän ja kutsuisimme sitä id_id:ksi sähköpostiosoitemallissamme.

Lopuksi sinun on lisättävä ensimmäiseen malliisi relaatio()-metodi, joka palauttaa luettelon monista, jotka edustavat kaikkia toisen mallisi kenttien välisiä suhteita. Jos esimerkiksi haluaisimme löytää kaikki käyttäjät, joiden sähköpostiosoite päättyy "testiin", käyttäisimme relaatiota seuraavasti:

def-relaatio(self, other): return [ (id_user, id_email) for (id_user, id_email) in self._get_all() ]

Mikä on REST Framework

REST Framework on kirjasto RESTful-verkkopalveluiden luomiseen Djangossa. Se tarjoaa yksinkertaisen ja johdonmukaisen tavan luoda verkkopalveluita, joita muut sovellukset voivat käyttää.

Related viestiä: