Model
모델은 애플리케이션에서 다루는 데이터의 구조와 관계를 정의합니다. 모델의 각 필드는 명확한 데이터 타입을 가져야 하고, null=True 및 blank=True 옵션은 데이터 무결성과 애플리케이션 로직에 미치는 영향을 고려해 신중하게 사용합니다.
Meta 클래스
모델은 데이터베이스 상태를 있는 그대로 표현하고 있어야 합니다. 유니크 키 제약, 인덱스 정의, 기본 정렬 순서, 테이블 이름 등 모든 메타데이터를 작성합니다.
class Product(models.Model):
# ... fields ...
class Meta:
verbose_name = "상품"
verbose_name_plural = "상품 목록"
ordering = ['-price']
__str__ 함수
모든 모델에는 __str__ 함수를 구현해 Django Admin이나 디버깅 과정에서 각 객체를 사람이 읽기 쉬운 형태로 쉽게 식별할 수 있도록 합니다.
class Article(models.Model):
title = models.CharField(max_length=255, verbose_name="제목")
content = models.TextField(verbose_name="내용")
def __str__(self):
return f"[{self.title}] {self.content.slice[:100]}..."