반응형
1:N 관계 복습
유저 생성 ORM
User.objects.create(username='test', password='test')
게시글 생성 ORM
$ python manage.py shell_plus
user1 = User.objects.get(pk=2)
In[] user1
Out[] <User:ksh>
Article.objects.create(title='aaaa', content='bbbbb', user=user1)
Article.objects.create(title='aaaa', content='bbbbb', user_id=user1.pk)
댓글 생성 ORM
comment = Comment.objects.get()
comment.article.pk
4
comment.article.title
title
article = Article.objects.get(pk=4)
# article과 user의 입장에서 댓글과 게시글이 있는지 없는지 모르기때문에 set.all()로 가져온다.
article.comment_set.all()
user1.article_set.all()
# 반복문으로도 사용가능
for article in user1.article_set.all():
print(article.title)
article1 = Article.objects.get(pk=?)
Comment.objects.create(content='content', user=user1, article=article1)
- 1:N 관계에서 N의 입장은 항상 참조하는 관계가 존재하고 1을 보장할 수 있기 때문에 바로바로 접근가능
- 1의 입장에서는 접근하는 방법이 달라진다
_set.all()
!!
- 1의 입장에서는 접근하는 방법이 달라진다
특정 게시글이 가지고 있는 전체 댓글 불러오기
article = Article.objects.get(pk=?)
article.comment_set.all()
= Article.objects.get(pk=?).comment_set.all()
특정 댓글이 어느 게시글과 연결되어 있는지 확인하기
comment = Comment.objects.get(pk=?)
comment.article.title
특정 게시글이 어느 유저와 연결되어 있는지 확인하기
article = Article.objects.get(pk=?)
article.user.username
특정 유저가 작성한 전체 게시글 가져오기
user1 = User.objects.get(pk=?)
user1.article_set.all()
특정 유저가 작성한 전체 댓글 가져오기
user1 = User.objects.get(pk=?)
user1.comment_set.all()
반응형
'웹 프로그래밍 > [ Django ]' 카테고리의 다른 글
[ Django ] 08. Django에서 JavaScript 이용하여 좋아요 구현하기 (1) | 2020.08.11 |
---|---|
[ Django ] 07. Django relation M:N (profile, follow, paging) (0) | 2020.08.11 |
[ Django ] 05. Django relation 1:N (사용자 분할) (0) | 2020.08.11 |
[ Django ] 04. Django 로그인/회원가입 구현 (0) | 2020.08.11 |
[ Django ] 03. Django Model-Form 알아보기 (0) | 2020.08.11 |