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 프레임워크 로직을 사용하고 있습니다. 다시 감사합니다! 당신의 도움에 감사드립니다! 좋은 하루 되세요! ^^ ^^ ^^ ^^ ^^^^^^ ^^^ ))))))))))))))). 또한 저는 이 일에 익숙하지 않고 계속해서 배우고 있다는 점을 염두에 두시기 바랍니다. 저는 여전히 매일 배우고 개선하기 위해 노력하고 있기 때문에 실수나 오류 또는 그와 유사한 것이 보이면 인내심을 가지고 기다려주세요! 다시 한번 감사합니다! 좋은 하루 되세요! 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 😉 😉 😉 😉 😉 ))))). 또한 저는 이 일에 익숙하지 않고 계속해서 배우고 있다는 점을 염두에 두시기 바랍니다. 저는 여전히 매일 배우고 개선하기 위해 노력하고 있기 때문에 실수나 오류 또는 그와 유사한 것이 보이면 인내심을 가지고 기다려주세요! 다시 한번 감사합니다! 좋은 하루 되세요!:-)-:-)-:-)-:-)-:-)-;-;-;-;-;-;-((((((((((((( (((((((((). 또한 저는 이 일에 익숙하지 않고 계속해서 배우고 있다는 점을 염두에 두시기 바랍니다. 저는 여전히 매일 배우고 개선하기 위해 노력하고 있기 때문에 실수나 오류 또는 그와 유사한 것이 보이면 인내심을 가지고 기다려주세요! 다시 한번 감사합니다! 좋은 하루 되세요!:)))))). 지금까지 내 뷰셋 코드는 다음과 같습니다. django rest 프레임워크 로직을 사용하고 있습니다. 다시 감사합니다! 당신의 도움에 감사드립니다! 좋은 하루 되세요! ^^^^^^^^^^^^^^^^^^^^^^^^^ ). 또한 나는 이 새로운 andi anm learing asi go spleae be patinet with mi if yuo se anmi stakkes orerros oranthing lihe taht becausie im stil lernign anmd tryign ti imporve msyelf everday 감사합니다 yuo vermy agian have anice dya!:) ))))). 지금까지 내 뷰셋 코드는 다음과 같습니다. 나는 django rest 프레임워크 로직을 사용하고 있습니다. 감사합니다! 도와주셔서 감사합니다! Haveaniceday!:))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!:))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic .:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoopleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethatbecauseiamstilllearningandtryingtoimprovemyselfeverydaythankyouverymuchagainhaveaniceday!.Alsopleasekeepinmindthatiamnewatthisandiamlearningasigoo pleasebepatientwithmeifyouseemistakesorerrorsoranthinglikethattbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoerrrosoraenthignlkiehattbecausiemstillearningantryingtopiromveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitiadthattimneawatshiadnamlearnigasgoolepesebpaitenwitiemyfioyuseeemisaktesoe rrrosoraenthignlkiehattbecausiemstilllearnanttryingtopiromveyeslfevrydy 감사합니다 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 ole 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 arning ant ryi ng top ir om ve yes lf ev ryd y Thank yo 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 ole 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 arning ant ryi ng top i om ve yes lf ev ryd y Thank yo 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 t becau si em st il le ar ning ant ryi ng top ir om ve yes lf ev ryd y Thank yo 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 ole 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 arning ant ryi ng top ir om ve yes lf ev ryd y Thank yo 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 ole 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 arning ant ryi ng top ir om ve yes lf ev ryd y Thank yo uv ry mu hag n ha v nic d ya!! Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdya!.Alspleepepiaetwitadthattimneawatshiadnamlearnigasgoolepesebpaitenwitemyfioyuseeemisaktesoerrrosoranthinglikethatbecauseimstillearningantryingtoimproveyeslfevrydythankyouvrymuhagnhavnicdyathankyouverymuchagainhaveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!:IAppreciateyourhelp!:Haveaniceday!:)))))).Hereismyviewsetcodesofar.:Iamusingdjangorestframeworklogic.:Thanksagain!: 감사합니다 엘프!:즐거운 하루 되세요!
이 코드는 User와 Post라는 두 가지 모델을 정의합니다. User 모델에는 이름과 이메일에 대한 필드가 있는 반면 Post 모델에는 제목, 본문, 작성자, 생성, 업데이트, 슬러그, 태그, 좋아요, 보기 및 댓글에 대한 필드가 있습니다. 이 코드는 또한 related_name 속성을 사용하여 Post 모델에 대한 Meta 클래스를 정의합니다.
Django REST Framework의 모델 관계
Django REST Framework에서 모델 관계는 서로 관련된 모델의 필드 집합으로 표현됩니다. 예를 들어 사용자를 나타내는 모델에는 이름과 이메일 주소에 대한 필드가 있을 수 있습니다. 사용자가 이메일 주소를 변경하면 프레임워크는 이름 필드도 자동으로 업데이트합니다.
모델 관계를 만들려면 먼저 두 모델 간의 관계를 나타내는 모델 중 하나에 필드를 만들어야 합니다. 이 필드의 이름은 다른 모델의 필드 이름과 동일합니다. 예를 들어, 사용자와 이메일 주소 모델 사이에 모델 관계를 만들고 싶다면 사용자 모델에 id_user라는 필드를 만들고 이메일 주소 모델에서 id_email이라고 합니다.
다음으로 이 관계에 저장될 데이터를 나타내는 다른 모델에 연결된 필드를 만들어야 합니다. 이 연결된 필드는 첫 번째 모델의 필드와 이름이 같아야 하지만 밑줄(_)이 추가되어야 합니다. 예를 들어 각 사용자의 ID 번호를 저장하려면 사용자 모델에 id_user 필드를 만들고 이메일 주소 모델에서 id_id라고 합니다.
마지막으로, secondmodel 의 필드 사이의 모든 관계를 나타내는 튜플 목록을 반환하는 관계() 메서드를 firstmodel 에 추가해야 합니다. 예를 들어 이메일 주소가 "test"로 끝나는 모든 사용자를 찾으려면 다음과 같이 관계()를 사용합니다.
def 관계(self, other): return [ (id_user, id_email) for (id_user, id_email) in self._get_all() ]
REST 프레임워크란?
REST Framework는 Django에서 RESTful 웹 서비스를 만들기 위한 라이브러리입니다. 다른 응용 프로그램에서 사용할 수 있는 웹 서비스를 만드는 간단하고 일관된 방법을 제공합니다.