Django Basic 1-4) Model

Turtle·2023년 12월 20일
0
post-thumbnail

📌모델

  • 정보의 종류를 결정 → 모델(테이블)
  • 모델의 속성을 정의 → 컬럼명
  • 각 속성의 타입을 지정 → 컬럼 타입(문자열, 정수, 실수, 불리언, 시간 등)
  • 각 속성의 크기를 결정 → 타입 크기(수의 크기, 문자열 길이 등)
  • 모델과 모델의 관계를 정의 → Relation(One to One, One to Many, Many to Many)

📌적용

from django.db import models

# Create your models here.
class Topic(models.Model):
    title = models.CharField(max_length=50, null=False)
    # auto_now_add = True → 레코드가 추가될 때 알아서 입력된 시간이 저장되도록 한다.
    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를 사용함

0개의 댓글