class Post(BaseModel):
author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='my_post_set', on_delete=models.CASCADE)
photo = models.ImageField(upload_to="instagram/post/%Y/%m/%d")
caption = models.CharField(max_length=500)
tag_set = models.ManyToManyField('Tag', blank=True)
location = models.CharField(max_length=100)
like_user_set = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name='like_post_set')
어떤 User가 작성한 포스팅 목록을 받아올 때
-> Post.objects.filter(author=user) 로 쿼리셋 획득 가능
-> user.post_set.all() 라는 reverse name으로 가져올 수도 있다.
저 이름은 ForeignKey 관계에서 자동으로 생성해 주는 이름인대 'related_name' 속성값을 지정해주지 않으면
모델명_set으로 자동으로 지정이 된다.
위 코드에서 , related_name='my_post_set' 을 지정 안 했을 때 author = models.ForeignKey 와 like_user_set = models.ManyToManyField 에서 둘 다 post_set 이름으로 충돌이 나서 DB Migrations(table 스키마) 하고는 상관이 없지만, Django ORM에서 참조되는 이름으로 사용할 때 에러가 발생하게 되므로 제목에 적힌 에러를 발생하게 된다.
user.my_post_set.all() -> 해당 User가 작성한 포스팅 목록
user.like_post_set.all() -> 해당 User가 좋아요 한 포스팅 목록
'장고 프레임워크' 카테고리의 다른 글
5 - mixins 상속을 통한 APIView 로직 재사용 (0) | 2020.06.17 |
---|---|
forms.py (0) | 2020.06.13 |
4) APIView를 활용한 뷰 만들기 (0) | 2020.06.07 |
views.py에 관하여 (0) | 2020.06.04 |
Django Template 문법에 관하여 (0) | 2020.06.03 |
댓글