Django/inflearn

Relation 모델 선언하기

곽수진 2022. 12. 1. 01:00
반응형

from django.db import models

# Create your models here.
class Restaurant(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=200)

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

class Reviews(models.Model):
    point = models.IntegerField()
    comment = models.CharField(max_length=500)

    restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE)

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

point = models.IntegerField()

    : 정수형 변수 point 선언

 

comment = models.CharField(max_length=500)

    : 최대 글자수 500자인 변수 comment 선언

 

restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE)

    : 식당 모델과의 릴레이션을 정의

      → on_delete CASCADE로 지정해 식당이 삭제되면 같이 삭제됨

 

created_at = models.DateTimeField(auto_new_add=True)

    : 글 작성시(이 모델의 데이터 저장시) 생성 시각을 created_at 변수로 선언

 

updated_at = models.DateTimeField(auto_now=True)

    : 글 수정시 시각을 updated_at 변수로 선언

 

Many-to-One 관계에서 Review(Many) : Restaurant(One)으로 이루어짐
→ 종속되는 모델인 Review에 ForeignKey로 상위 모델을 정의해서 릴레이션을 구현

 

* on_delete 정책 *
CASCADE : 연관된 식당 레코드가 삭제될 때 등록된 모든 댓글이 삭제됨
SET_NULL : restaurant 속성이 NULL 데이터로 채워짐
SET_DEFAULT : 기본 값으로 업데이트함
DO_NOTHING : 아무것도 하지 않음
반응형

'Django > inflearn' 카테고리의 다른 글

리뷰 삭제 구현하기  (0) 2022.12.04
리뷰 등록 구현하기  (0) 2022.12.03
Relation 개요  (2) 2022.11.30
D : 게시글 삭제 구현하기  (0) 2022.11.12
R : 게시글 상세 화면 구현하기  (0) 2022.11.11