반응형
1:N 관계 예시
한명의 유저는 여러개의 포스트를 작성할 수 있다. -> 1:N
하나의 포스트는 여러개의 댓글을 가질 수 있다. -> 1:N
이렇게 하나의 객체가 여러개의 객체를 가질 수 있을때 1:N 관계라고 하고 ForeignKey로 관계를 정의 할 수 있다.
정의 방법
N에 해당하는 객체에 ForeignKey 로 지정해준다.
Post, Comment 예시로 들면 아래처럼 작성할 수 있다.
class Post(models.Model):
...
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete= models.CASCADE)
Queryset 작성 방법
1. N 객체에서 관계된 객체의 값 조회하기
comment = Comment.objects.first()
comment.post

2. 반대로 특정 Post에 작성된 Comment를 뽑고 싶을 때!
post에는 comment 컬럼이 없기때문에 1번 방법처럼 뽑을 수 없음
예시) id = 1인 포스트에 달린 댓글을 뽑고 싶을때
1) Post에서 객체 뽑아서, comment의 필터값으로 전달
post = Post.objects.get(id=1)
Comment.objects.filter(post= post)

2) FK의 reverse_name 사용: 모델명소문자_set
comment_set으로 조회 > 1번보다 더욱 간편한 방법!

(+) foreignkey 생성시 related_name 설정해주면 해당 이름을 reverse_name으로 사용가능하다.
반응형
'Today I Learned > django' 카테고리의 다른 글
장고 ViewSet 으로 list, retrieve, update, create, delete 직접 구현하기 (0) | 2023.09.28 |
---|---|
장고 django ManyToMany (N:M 다대다 관계) (0) | 2023.09.26 |
장고 (djagno) Rest framework tutorial #2 데이터 보내기(POST) (0) | 2023.09.11 |
장고(django) 회원가입 (UserCreationForm) (0) | 2023.09.07 |
장고 asgi(비동기) 채팅기능 구현하기 (2) | 2023.09.06 |