📌모델

- 정보의 종류를 결정 → 모델(테이블)
- 모델의 속성을 정의 → 컬럼명
- 각 속성의 타입을 지정 → 컬럼 타입(문자열, 정수, 실수, 불리언, 시간 등)
- 각 속성의 크기를 결정 → 타입 크기(수의 크기, 문자열 길이 등)
- 모델과 모델의 관계를 정의 → Relation(One to One, One to Many, Many to Many)
📌적용
from django.db import models
class Topic(models.Model):
title = models.CharField(max_length=50, null=False)
created_at = models.DateTimeField(auto_now_add=True, null=False)
def __str__(self):
return self.title
class Option(models.Model):
name = models.CharField(max_length=20, null=False)
topic = models.ForeignKey(Topic, on_delete=models.CASCADE, null=False)
def __str__(self):
return self.name
class Vote(models.Model):
topic = models.ForeignKey(Topic, on_delete=models.CASCADE, null=False)
option = models.ForeignKey(Option, on_delete=models.CASCADE, null=False)
created_at = models.DateTimeField(auto_now_add=True, null=False)
def __str__(self):
return self.topic
📌관계(Relation)의 형태

- 하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우
- 각 전화번호가 단 한 명의 유저와 연결된다는 것을 의미
- 1:1 관계는 자주 사용되지 않는다.

- 하나의 레코드가 서로 다른 여러 개의 레코드와 연결된 경우
- 한 명의 유저가 여러 개의 전화번호를 가질 수 있다는 것을 의미
- Django에서 1:N 관계를 정의하기 위해서 외래키(Foreign Key)를 사용함

- 여러 개의 상품과 여러 명의 고객이 존재
- 고객 한 명은 여러 개의 상품을 구매할 수 있고 하나의 상품은 여러 명의 고객이 구매할 수 있다.
- Django에서 N:M 관계를 정의하기 위해서
ManyToManyField
를 사용함