Решено: hpw за създаване на свързан модел в логиката на django rest framework

Последна актуализация: 09/11/2023

Основният проблем, свързан със създаването на свързани модели в логиката на Django Rest Framework, е, че може да бъде трудно да се следи кои екземпляри на модел отговарят на кои изгледи. Това може да се превърне в проблем, ако изгледите трябва да имат достъп до данни от множество модели или ако моделите трябва да се актуализират автоматично, когато изгледите се променят.

Имам два модела:
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
Искам да създам набор от изгледи, който ще показва всички публикации с данните на потребителя, който го е създал, и не знам как да го направя. Опитах това, но не се получи. Някакви предположения ? Благодаря предварително! 😀 😀 😀 😀 😀 😀 <3 <3 <3 <3 <3 <3 <3 <3 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 😉 😉 😉 😉 ;););););)); ;);)))))). Това е моят код за изгледи досега. Използвам логиката на django rest framework. Благодаря отново ! Оценявам вашата помощ! Приятен ден ! ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ))))))))))))))). Също така, моля, имайте предвид, че съм нов в това и се уча, докато вървя, така че моля, бъдете търпеливи с мен, ако видите някакви грешки или нещо подобно, защото аз все още се уча и се опитвам да се подобрявам всеки ден! Благодаря ви отново! Приятен ден! 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 😉 😉 😉 😉 😉 ))))). Също така, моля, имайте предвид, че съм нов в това и се уча, докато вървя, така че моля, бъдете търпеливи с мен, ако видите някакви грешки или нещо подобно, защото аз все още се уча и се опитвам да се подобрявам всеки ден! Благодаря ви отново! Приятен ден!:-)-:-)-:-)-:-)-:-)-;-;-;-;-;-;-((((((((((((( (((((((((). Също така, моля, имайте предвид, че съм нов в това и се уча, докато вървя, така че моля, бъдете търпеливи с мен, ако видите някакви грешки или нещо подобно, защото аз все още се уча и се опитвам да се подобрявам всеки ден! Благодаря ви отново! Приятен ден!:)))))). Това е моят код за изгледи досега. Използвам логиката на django rest framework. Благодаря отново ! Оценявам вашата помощ! Приятен ден ! ^^^^^^^^^^^^^^^^^^^^^^^^ ). Също така, моля, имайте предвид, че аз съм нов в това и аз се уча, ако искате да се погрижите за мен, ако сте anmi stakkes orerros oranthing lihe taht, защото все още уча и опитвам да се подобря всеки ден, много ви благодаря, много и приятно!:) ))))). Това е моят код за изгледи досега. Използвам django rest framework logic. Благодаря отново! Оценявам помощта ви! Haveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!:Iappreciateyourhelp!:Haveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic .:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoo pleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethattbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoe rrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydy благодаря ти v ry mu hag n ha v nic d ya!! Al s plee pia et wi ti ad that t tim new at shi ad nam 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 learning ant ryi ng top ir omve yes lf evryd y thank you uvry mu hag n ha v nic d ya!! Al s plee pia et wi ti ad that t tim new at shi ad nam 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 il arching ant rying top ir omve yes lf evryd y thank you uvry mu hag n ha v nic d ya!![/code] Al sple e pi a et wi ti ad that t tim new 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 ille ar nin g ant ryi ng top ir omve yes lf ev ryd y благодаря ти uvry mu hag n ha v nic d ya!! Al s plee pia et wi ti ad that t tim new at shi ad nam 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 learning ant ryi ng top ir omve yes lf evryd y thank you uvry mu hag n ha v nic d ya!! Al s plee pia et wi ti ad that t tim new at shi ad nam 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 learning ant ryi ng top ir omve yes lf evryd y thank you uvry mu hag n ha v nic d ya!! Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdyathankyouverymuchagainhaveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!: Оценявам ви elp!:Приятен ден! Този код дефинира два модела, User и Post. Моделът User има полета за име и имейл, докато моделът Post има полета за title, body, author, created, updated, slug, tags, likes, views, and comments.

Моделиране на връзки в Django REST Framework

В Django REST Framework връзките на моделите са представени от набор от полета в моделите, които са свързани помежду си. Например, модел, представляващ потребител, може да има полета за неговото име и имейл адрес. Ако потребителят промени своя имейл адрес, рамката автоматично ще актуализира и полето за име.

За да създадете моделна връзка, първо трябва да създадете поле в един от вашите модели, което представлява връзката между двата модела. Името на това поле ще бъде същото като името на полето в другия модел. Например, ако искаме да създадем моделна връзка между нашите потребителски и имейл адресни модели, ще създадем поле, наречено id_user в нашия потребителски модел и ще го наречем id_email в нашия имейл адресен модел.

След това трябва да създадете свързано поле във вашия друг модел, което представлява данните, които ще се съхраняват в тази връзка. Това свързано поле трябва да има същото име като полето във вашия първи модел, но с долна черта ( _ ), добавена към него. Например, ако искаме да съхраним идентификационен номер за всеки потребител, ще създадем поле id_user в нашия потребителски модел и ще го наречем id_id в нашия модел на имейл адрес.

И накрая, трябва да добавите метод relation() към вашия първи модел, който връща списък от кортежи, представящи всички релации между полета във вашия втори модел. Например, ако искаме да намерим всички потребители, които имат имейл адрес, завършващ с „test“, ще използваме relation() така:

def relation(self, other): return [(id_user, id_email) за (id_user, id_email) в self._get_all()]

Какво е REST Framework

REST Framework е библиотека за създаване на RESTful уеб услуги в Django. Той предоставя прост и последователен начин за създаване на уеб услуги, които могат да се използват от други приложения.

Подобни публикации:

Оставете коментар