django.db.models.Model 에 속하는 클래스이다.
데이터를 저장할 스키마를 설계하는 것으로 일반적으로 해당 클래스를 상속하여 사용하며 데이터베이스 테이블에 매핑하기 위한 ORM 방식이다.
Model은 일반적으로 field로 구성된다. 해당 field는 데이터베이스에 field로 매핑이 된다.
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 사용 시)
자동으로 테이블을 생성시켜준다.
클래스의 속성을 통해 지정한다.
대표적인 것만 작성하겠다.
models.CharField(max_length=100) models.TextField()models.IntegerField()models.DateField()models.BooleanField(default=True)models.ForeignKey("<class>", on_delete=models.CASCADE)max_length=100 - CharField에 사용하여 최대 길이 제한default=3 - 기본값 설정null=True - 해당 필드가 NULL값을 갖을 수 있는지 설정(기본은 False)blank=True - 빈칸 허용 (기본은 False)unique=True - 필드에 저장되는 값이 고유해야하는지(기본은 False)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)