[DRF] Django REST framework 하나씩 파헤쳐보기 - Model - 2

liljoon·2024년 1월 17일

Django REST Framework

목록 보기
2/3

Model 이란?

django.db.models.Model 에 속하는 클래스이다.
데이터를 저장할 스키마를 설계하는 것으로 일반적으로 해당 클래스를 상속하여 사용하며 데이터베이스 테이블에 매핑하기 위한 ORM 방식이다.

Model은 일반적으로 field로 구성된다. 해당 field는 데이터베이스에 field로 매핑이 된다.

  • simple example
from django.db import models


class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

해당 파일을 작성 후

python manage.py makemigration // migration 파일 생성
pyhton manage.py migrate // 실제 migration

을 통해 실제 DB에 저장시켜야 한다.(local, db.sqlite 사용 시)
자동으로 테이블을 생성시켜준다.


Field

  • 주의점 : clean, save, delete와 같이 충돌할 수 있는 단어는 사용X

클래스의 속성을 통해 지정한다.

Field Type

대표적인 것만 작성하겠다.

  1. 문자열 - models.CharField(max_length=100)
  2. 긴 텍스트 - models.TextField()
  3. 정수 - models.IntegerField()
  4. 날짜 - models.DateField()
  5. 참, 거짓 - models.BooleanField(default=True)
  6. 외부 키 - models.ForeignKey("<class>", on_delete=models.CASCADE)

Field Option

  1. max_length=100 - CharField에 사용하여 최대 길이 제한
  2. default=3 - 기본값 설정
  3. null=True - 해당 필드가 NULL값을 갖을 수 있는지 설정(기본은 False)
  4. blank=True - 빈칸 허용 (기본은 False)
  5. unique=True - 필드에 저장되는 값이 고유해야하는지(기본은 False)
  6. auto_now_add=True, auto_now=True - 날짜 및 시간 필드에 사용

기본 키

따로 기본 키를 설정하지 않더라도 장고에서 자체적으로 id 값을 만들어 기본값을 생성한다.

from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=100)

이렇게 직접 명시할 수도 있다.


실습

from django.db import models


# Create your models here.

class Author(models.Model):
    name = models.CharField(max_length=10, unique=True)

class Book(models.Model):
    author = models.ForeignKey("Author", on_delete=models.CASCADE)
    context = models.TextField(blank=True)

0개의 댓글