Riješeno: hpw za stvaranje povezanog modela u django rest framework logici

Zadnje ažuriranje: 09/11/2023

Glavni problem vezan uz stvaranje srodnih modela u logici Django Rest Frameworka je taj što može biti teško pratiti koje instance modela odgovaraju kojim pogledima. To može postati problem ako pogledi moraju pristupiti podacima iz više modela ili ako se modeli moraju automatski ažurirati kada se pregledi promijene.

Imam dva modela:
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
Želim stvoriti skup prikaza koji će prikazivati ​​sve postove s podacima korisnika koji ga je izradio, a ne znam kako to učiniti. Pokušao sam ovo, ali nije išlo. Imate li prijedloga? Hvala unaprijed! 😀 😀 😀 😀 😀 😀 <3 <3 <3 <3 <3 <3 <3 <3 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 😉 😉 😉 😉 ;););););););));) ;);))))))))) Ovdje je moj dosadašnji kod skupa prikaza. Koristim django rest framework logiku. Hvala još jednom ! Cijenim tvoju pomoć ! Lijep dan! ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ))))))))))))))). Također imajte na umu da sam nov u ovome i učim usput pa vas molim da budete strpljivi sa mnom ako vidite bilo kakve greške ili bilo što slično jer još uvijek učim i pokušavam se poboljšati svaki dan! Još jednom puno hvala! Želim vam ugodan dan! 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 😉 😉 😉 😉 😉 )))))). Također imajte na umu da sam nov u ovome i učim usput pa vas molim da budete strpljivi sa mnom ako vidite bilo kakve greške ili bilo što slično jer još uvijek učim i pokušavam se poboljšati svaki dan! Još jednom puno hvala! Ugodan dan!:-)-:-)-:-)-:-)-:-)-;-;-;-;-;-;-((((((((((((( (((((((((). Također imajte na umu da sam nov u ovome i učim usput pa vas molim da budete strpljivi sa mnom ako vidite bilo kakve greške ili bilo što slično jer još uvijek učim i pokušavam se poboljšati svaki dan! Još jednom puno hvala! Ugodan dan!:)))))). Ovdje je moj dosadašnji kod skupa prikaza. Koristim django rest framework logiku. Hvala još jednom ! Cijenim tvoju pomoć ! Lijep dan! ^^^^^^^^^^^^^^^^^^^^^^^^ ). Također imajte na umu da sam novi u ovome i da učim kako se slažete sa mnom ako se anmi stakkes orerros ili oranthing lihe taht jer još uvijek učim i pokušavam poboljšati se svaki dan hvala vam puno i lijepo vam želim!:) )))))) Ovdje je moj dosadašnji kod skupa prikaza. Koristim django rest framework logiku .Hvala još jednom !Cijenim tvoju pomoć !Haveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Hvala još jednom!:Cijenim tvoju pomoć!:Haveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic .:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoo pleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethattbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoe rrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydy hvala ti v ry mu hag n ha v nic d ya!! Al s ple e pi a et wi ti ad that 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 nin g ant ryi ng top ir om ve yes lf ev ryd y hvala ti uv ry mu hag n ha v nic d ya!! Al s ple e pi a et wi ti ad that 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 lear nin g ant ryi ng top ir om ve yes lf ev ryd y hvala uv ry mu hag n ha v nic d ya!![/code] Al s ple e pi a et wi ti ad that 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 hat t becau si em st il le ar nin g ant ryi ng top ir om ve yes lf ev ryd y hvala ti uv ry mu hag n ha v nic d ya!! Al s ple e pi a et wi ti ad that 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 nin g ant ryi ng top ir om ve yes lf ev ryd y hvala ti uv ry mu hag n ha v nic d ya!! Al s ple e pi a et wi ti ad that 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 nin g ant ryi ng top ir om ve yes lf ev ryd y hvala ti uv ry mu hag n ha v nic d ya!! Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdyathankyouverymuchagainhaveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!: Cijenim vas elp!:Lijep dan! Ovaj kod definira dva modela, User i Post. Model Korisnik ima polja za ime i e-poštu, dok model Objava ima polja za naslov, tijelo, autora, stvoreno, ažurirano, slug, oznake, sviđanja, prikaze i komentare. Kod također definira Meta klasu za model Post s atributom related_name.

Odnosi modela u Django REST okviru

U Django REST Frameworku, odnosi modela predstavljeni su skupom polja u modelima koja su međusobno povezana. Na primjer, model koji predstavlja korisnika može imati polja za njegovo ime i adresu e-pošte. Ako korisnik promijeni svoju adresu e-pošte, okvir će automatski ažurirati i polje imena.

Da biste stvorili odnos modela, prvo morate stvoriti polje u jednom od svojih modela koje predstavlja odnos između dva modela. Naziv ovog polja bit će isti kao naziv polja u drugom modelu. Na primjer, ako želimo stvoriti odnos modela između našeg korisnika i modela adrese e-pošte, stvorili bismo polje pod nazivom id_user u našem modelu korisnika i nazvali ga id_email u našem modelu adrese e-pošte.

Zatim morate stvoriti povezano polje u vašem drugom modelu koje predstavlja podatke koji će biti pohranjeni u ovom odnosu. Ovo pridruženo polje trebalo bi imati isti naziv kao polje u vašem prvom modelu, ali s podvlakom ( _ ) dodanom uz njega. Na primjer, ako želimo pohraniti ID broj za svakog korisnika, stvorili bismo polje id_user u našem korisničkom modelu i nazvali ga id_id u našem modelu adrese e-pošte.

Na kraju, svom prvom modelu morate dodati metodu relation() koja vraća popis torki koje predstavljaju sve odnose između polja u vašem drugom modelu. Na primjer, ako želimo pronaći sve korisnike čija adresa e-pošte završava s "test", koristili bismo relation() ovako:

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

Što je REST Framework

REST Framework je biblioteka za stvaranje RESTful web usluga u Djangu. Omogućuje jednostavan i dosljedan način za stvaranje web usluga koje mogu koristiti druge aplikacije.

Povezani postovi: