Django Model 코드 작성하기

서재환·2022년 4월 6일
0

Django

목록 보기
12/40
from tkinter import CASCADE
from django.db import models
from django.contrib.auth import get_user_model

class Post(models.Model):
    image = models.ImageField(verbose_name='이미지', null=True, blank=True)
    content = models.TextField(verbose_name='내용')
    created_at = models.DateTimeField(verbose_name='작성일', auto_now_add=True)
    view_count = models.IntegerField(verbose_name='조회수', default=0)
    writer = models.ForeignKey(to=User, on_delete=models.CASCADE, null=True, blank=True)

class Comment(models.Model):
    content = models.TextField(verbose_name='내용')
    created_at = models.DateTimeField(verbose_name='작성일')
    post = models.ForeignKey(to='Post', on_delete=models.CASCADE)
    writer = models.ForeignKey(to=User, on_delete=models.CASCADE) #가지고 온 모델을 넣어준다.

매개인자에 models.Model이 들어가는 부분에 대해서

위 코드를 보면 models.Model이라는 부분이 매개인자로 들어가있다. 해당 부분이 의미하는 바는 상속이다.

상속과 관련한 부분은 따로 정리가 필요하다.

Post와 Comment 간의 관계를 통해 살펴본 방향성(단방향 및 양방향)

Post가 1이고 Comment가 N이다. 하나의 게시글에는 여러개의 댓글이 달린다.

1:N의 연관관계에서 N인 댓글은 게시글을 참조할 수 있지만 게시글은 댓글을 참조할 수 없다.
위 내용은 code를 통해 확인할 수 있는데 Comment는 post라는 속성에 접근할 수 있지만 Post
는 Comment에 접근할 수 없다. 이렇게 서로 관계가 있는 엔티티중 한쪽만 참조하는 것을 단방향
관계에 있다고 한다.

하지만 엔티티 간에는 서로 양방향 관계를 맺는다. 예를 들어 게시글에는 Comment_id 라는 필드
를 통해 Comment와 Join 할 수 있고 Comment는 Post_id를 통해 Post 엔티티와 Join 할 수 있
다.

객체 연관관계 vs 테이블 연관관계

객체는 참조(주소)로 연관관계를 맺는다.

테이블은 외래키로 연관관계를 맺는다.

0개의 댓글