El principal problema relacionado con la creación de modelos relacionados en la lógica de Django Rest Framework es que puede ser difícil hacer un seguimiento de qué instancias de modelo corresponden a qué vistas. Esto puede convertirse en un problema si las vistas necesitan acceder a datos de varios modelos o si los modelos deben actualizarse automáticamente cuando se cambian las vistas.
Tengo dos modelos:
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
Quiero crear un conjunto de vistas que muestre todas las publicaciones con los datos del usuario que lo creó y no sé cómo hacerlo. Intenté esto pero no funcionó. Alguna sugerencia? Gracias de antemano! 😀 😀 😀 😀 😀 😀 <3 <3 <3 <3 <3 <3 <3 <3 ;);)))))). Aquí está mi código viewset hasta ahora. Estoy usando la lógica del marco de descanso de Django. Gracias de nuevo ! Aprecio tu ayuda ! Que tengas un buen día! ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ )))))))))))))))). También tenga en cuenta que soy nuevo en esto y estoy aprendiendo sobre la marcha, así que tenga paciencia conmigo si ve algún error o algo así porque todavía estoy aprendiendo y tratando de mejorar todos los días. ¡De nuevo, muchas gracias! ¡Que tengas un buen día! 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 😉 😉 😉 😉 😉 ))))). También tenga en cuenta que soy nuevo en esto y estoy aprendiendo sobre la marcha, así que tenga paciencia conmigo si ve algún error o algo así porque todavía estoy aprendiendo y tratando de mejorar todos los días. ¡De nuevo, muchas gracias! ¡Que tengas un lindo día!:-)-:-)-:-)-:-)-:-)-;-;-;-;-;-;-((((((((((((( (((((((((). También tenga en cuenta que soy nuevo en esto y estoy aprendiendo sobre la marcha, así que tenga paciencia conmigo si ve algún error o algo así porque todavía estoy aprendiendo y tratando de mejorar todos los días. ¡De nuevo, muchas gracias! ¡Que tengas un lindo día!:)))))). Aquí está mi código viewset hasta ahora. Estoy usando la lógica del marco de descanso de Django. Gracias de nuevo ! Aprecio tu ayuda ! Que tengas un buen día! ^^^^^^^^^^^^^^^^^^^^^^^). También, tenga en cuenta que soy nuevo en esto y estoy aprendiendo, así que vaya, por favor, sea paciente con mi si usted ve y mi stakkes orerros oranthing lihe taht porque todavía estoy aprendiendo y tratando de mejorarme todos los días, muchas gracias, ¡muchas gracias otra vez, tenga un buen día! :) ))))). Aquí está mi código viewset hasta ahora. Estoy usando la lógica de Django Rest Framework. ¡Gracias de nuevo! ¡Agradezco su ayuda! ¡Que tengas un buen día! :)))))). .:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoo pleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethattbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoe rrrosoraenthignlkiehattporque sigo aprendiendo y tratandotopiromveyeslfevrydy gracias 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 nam le ar nig as go ol e pe se bpai ten wi ti em yfi io yu se e mi sa kte so err ro so ran thing like sombrero t porque si todavía estoy aprendiendo ant ryi ng top ir om ve sí lf ev ryd y gracias 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 nam le ar nig as go ol e pe se bpai ten wi ti em yfi io yu se e mi sa kte so err ro so ran thing like ¡Sombrero porque si todavía estoy aprendiendo y tratando de ir arriba om ve sí lf ev ryd y gracias uv ry mu hag n ha v nic d ya! [/ código] Al s ple e pi a et wi ti ad que tim ne aw at shi ad nam le ar nig as go ol e pe se bpai ten wi ti em yfi io yu see 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 sí lf ev ryd y gracias 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 nam le ar nig as go ol e pe se bpai ten wi ti em yfi io yu se e mi sa kte so err ro so ran thing like sombrero t porque si todavía estoy aprendiendo ant ryi ng top ir om ve sí lf ev ryd y gracias 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 nam le ar nig as go ol e pe se bpai ten wi ti em yfi io yu se e mi sa kte so err ro so ran thing like sombrero t porque si todavía estoy aprendiendo ant ryi ng top ir om ve sí lf ev ryd y gracias uv ry mu hag n ha v nic d ya!! Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdyathankyouverymuchagainhaveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!: Yo aprecio tu r elp!:¡Que tengas un buen día!
Este código define dos modelos, Usuario y Publicación. El modelo de usuario tiene campos para nombre y correo electrónico, mientras que el modelo de publicación tiene campos para título, cuerpo, autor, creado, actualizado, slug, etiquetas, me gusta, vistas y comentarios. El código también define una clase Meta para el modelo Post con un atributo related_name.
Relaciones de modelos en Django REST Framework
En Django REST Framework, las relaciones de modelos están representadas por un conjunto de campos en los modelos que están relacionados entre sí. Por ejemplo, un modelo que representa a un usuario puede tener campos para su nombre y dirección de correo electrónico. Si el usuario cambia su dirección de correo electrónico, el marco también actualizará automáticamente el campo de nombre.
Para crear una relación de modelo, primero debe crear un campo en uno de sus modelos que represente la relación entre los dos modelos. El nombre de este campo será el mismo que el nombre del campo en el otro modelo. Por ejemplo, si quisiéramos crear una relación de modelo entre nuestros modelos de dirección de correo electrónico y usuario, crearíamos un campo llamado id_user en nuestro modelo de usuario y lo llamaríamos id_email en nuestro modelo de dirección de correo electrónico.
A continuación, debe crear un campo asociado en su otro modelo que represente los datos que se almacenarán en esta relación. Este campo asociado debe tener el mismo nombre que el campo en su primer modelo pero con un guión bajo (_) adjunto. Por ejemplo, si quisiéramos almacenar un número de ID para cada usuario, crearíamos un campo id_user en nuestro modelo de usuario y lo llamaríamos id_id en nuestro modelo de dirección de correo electrónico.
Finalmente, debe agregar un método de relación () a su primer modelo que devuelva una lista de tuplas que representan todas las relaciones entre los campos en su segundo modelo. Por ejemplo, si quisiéramos encontrar a todos los usuarios que tienen una dirección de correo electrónico que termina en "prueba", usaríamos la relación() así:
def relación(self, other): return [(id_user, id_email) for (id_user, id_email) in self._get_all() ]
¿Qué es el marco REST?
REST Framework es una biblioteca para crear servicios web RESTful en Django. Proporciona una manera simple y consistente de crear servicios web que pueden ser consumidos por otras aplicaciones.