
model을 설계하는데 있어서 관계는 뺴놓을 수 없는 중요한 개념. 각 모델 간에 여러 관계를 정의함으로서 많은 걸을 구현 할 수 있게 되며, 관계의 종류에는 총 3가지가 있음
ForeignKey는 1:N 관계를 의미. 예를 들어 게시글과 댓글을 생각할 수 있는데, 하나의 글에는 그 글에 해당하는 댓글이 여러 개 존재하게 되므로 ForeignKey를 만족
class Post(models.Model):
# 생략
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
on_delete 설정 : 각각에 대한 설명은 1인 쪽의 데이터가 삭제 되었을 시, N인 쪽의 데이터를 어떻게 처리할 지에 대한 설정 # N -> 1
comment.post
# 1 -> N
post.comment_set
OneToOneField는 1:1 관계를 의미
ManyToManyField는 다대다 관계를 의미합니다. 예시로는 Post 와 Tag 를 생각할 수 있음
# 방법 1
class Post(models.Model):
tag = models.ManyToManyField('Tag',blank=True)
class Tag(models.Model):
# 생략
# 방법 2
class Post(models.Model):
# 생략
class Tag(models.Model):
post = models.ManyToManyField(post,blank=True)