Solucionat: hpw per crear un model relacionat a la lògica del marc django rest

Darrera actualització: 09/11/2023

El principal problema relacionat amb la creació de models relacionats a la lògica de Django Rest Framework és que pot ser difícil fer un seguiment de quines instàncies de model corresponen a quines vistes. Això pot convertir-se en un problema si les vistes necessiten accedir a dades de diversos models o si els models s'han d'actualitzar automàticament quan es canvien les vistes.

Tinc dos models:
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
Vull crear un conjunt de visualitzacions que mostri totes les publicacions amb les dades de l'usuari que l'ha creat i no sé com fer-ho. Ho vaig provar però no va funcionar. Alguna suggerència ? Gràcies per endavant! 😀 😀 😀 😀 😀 😀 <3 <3 <3 <3 <3 <3 <3 <3 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 🙂 🙂 😉 😉 😉 😉 😉););)); ;);))))))). Aquí teniu el meu codi de visualització fins ara. Estic utilitzant la lògica del marc de resta django. Gràcies de nou ! Us agraeixo la vostra ajuda! Que tinguis un bon dia ! ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ )))))))))))))))). A més, tingueu en compte que sóc nou en això i que estic aprenent a mesura que vaig, així que si us plau, tingueu paciència amb mi si veieu algun error o qualsevol cosa semblant perquè encara estic aprenent i intento millorar-me cada dia! Moltes gràcies de nou! Que tinguis un bon dia! 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 😉 😉 😉 😉 😉 ))))). A més, tingueu en compte que sóc nou en això i que estic aprenent a mesura que vaig, així que si us plau, tingueu paciència amb mi si veieu algun error o qualsevol cosa semblant perquè encara estic aprenent i intento millorar-me cada dia! Moltes gràcies de nou! Que tinguis un bon dia!:-)-:-)-:-)-:-)-:-)-;-;-;-;-;-;-((((((((((((( ((((((((().). A més, tingueu en compte que sóc nou en això i que estic aprenent a mesura que vaig, així que si us plau, tingueu paciència amb mi si veieu algun error o qualsevol cosa semblant perquè encara estic aprenent i intento millorar-me cada dia! Moltes gràcies de nou! Que tinguis un bon dia!:)))))). Aquí teniu el meu codi de visualització fins ara. Estic utilitzant la lògica del marc de resta django. Gràcies de nou ! Us agraeixo la vostra ajuda! Que tinguis un bon dia ! ^^^^^^^^^^^^^^^^^^^^^^^^^). També si us plau, tingueu en compte que sóc una novetat en aquest aprenentatge i, per tant, estic patit amb mi si us interessa fer-ho, perquè estic aprendre i intento millorar-lo cada dia, moltes gràcies! ))))). Aquí teniu el meu codi de visualització fins ara. Estic fent servir la lògica del marc django rest. Gràcies de nou! Agraeixo la teva ajuda! Haveaniceday!:)))))). Hereismyviewsetcode fins ara.:Iamusingdjangorestframeworklogic.:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!:))))))).Hereismyviewsetframeworklogic.:Iamusingdjangorestframeworklogic. .:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoo pleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethattbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoe rrrosoraenthignlkiehatt perquè encara aprendre i provar de veure'lslfevrydy gràcies 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 hat t becau si em st il le ar nin g ant ryi ng top ir om ve yes Lf ev ryd y thank you uv 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 hat t becau si em st il le ar nin g ant ryi ng top ir om ve yes lf ev ryd y thank you uv ry 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 lik e hat t becau si em st il le ar nin g ant ryi ng top ir om ve yes lf ev ryd y gràcies uv 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 hat t becau si em st il le ar nin g ant ryi ng top ir om ve yes Lf ev ryd y thank you uv 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 hat t becau si em st il le ar nin g ant ryi ng top ir om ve yes Lf ev ryd y thank you uv ry mu hag n ha v nic d ya!! Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdyathankyouverymuchagainhaveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!: Aprecio la teva elp!: Bon dia! Aquest codi defineix dos models, User i Post. El model d'usuari té camps per al nom i el correu electrònic, mentre que el model de publicació té camps per a títol, cos, autor, creat, actualitzat, slug, etiquetes, m'agrada, visualitzacions i comentaris. El codi també defineix una classe Meta per al model Post amb un atribut related_name.

Relacions de models a Django REST Framework

A Django REST Framework, les relacions de model es representen per un conjunt de camps en els models que estan relacionats entre si. Per exemple, un model que representa un usuari pot tenir camps per al seu nom i adreça electrònica. Si l'usuari canvia la seva adreça de correu electrònic, el marc també actualitzarà automàticament el camp del nom.

Per crear una relació de model, primer heu de crear un camp en un dels vostres models que representi la relació entre els dos models. El nom d'aquest camp serà el mateix que el nom del camp de l'altre model. Per exemple, si volguéssim crear una relació de model entre els nostres models d'usuari i d'adreça de correu electrònic, crearíem un camp anomenat id_user al nostre model d'usuari i l'anomenaríem id_email al nostre model d'adreça de correu electrònic.

A continuació, heu de crear un camp associat a l'altre model que representi les dades que s'emmagatzemaran en aquesta relació. Aquest camp associat hauria de tenir el mateix nom que el camp del vostre primer model, però amb un guió baix ( _ ) afegit. Per exemple, si volguéssim emmagatzemar un número d'identificació per a cada usuari, crearíem un camp id_user al nostre model d'usuari i l'anomenaríem id_id al nostre model d'adreça de correu electrònic.

Finalment, heu d'afegir un mètode relation() al vostre primer model que retorni una llista de tuples que representen totes les relacions entre camps del vostre segon model. Per exemple, si volguéssim trobar tots els usuaris que tenen una adreça de correu electrònic que acaba amb "test", utilitzaríem relation() de la següent manera:

def relation(self, other): retorna [(id_user, id_email) per a (id_user, id_email) a self._get_all()]

Què és REST Framework

REST Framework és una biblioteca per crear serveis web RESTful a Django. Proporciona una manera senzilla i coherent de crear serveis web que poden ser consumits per altres aplicacions.

Articles Relacionats: