훈훈훈
파이썬(Django) :: Django-mptt 정리 본문
이번에는 Django-mptt에 대하여 정리해보려고 한다.
해당 모듈을 사용하게된 계기는 ERD 설계 시, Categorya 항목들에 대하여 계층형으로 구성하기 위해 사용하게 되었다.
카테고리 항목들을 계층형으로 작성하는 이유는 다음과 같다.
만약 카테고리가 main, sub 두 가지로 구성이 되어 있다고 가정해보자, 이렇게 구축된 환경에서 category가 1개 2개 3개 늘어날 때마다
각각 독립적인 관계가 아니기 때문에 구조가 점점 복잡해지게 된다.
하지만 계층형으로 설계시 아래와 같이 만들 수 있으며, 확장에 용이하다.
# 카테고리 예시
# 예제 코드
from mptt.models import MPTTModel, TreeForeignKey
class Category(MPTTModel):
name = models.CharField(max_length=50, unique=True)
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class MPTTMeta:
order_insertion_by = ['name']
class Meta:
db_table = 'categories'
위 예제는 Template 없이 단순히 REST API를 만들기 위해서 사용한 예시이다.
카테고리를 위와 같이 작성하였다면, 이제 Category 테이블 한 곳에서 계층형 구조로 설계할 수 있다.
** 참고
https://buildmedia.readthedocs.org/media/pdf/mptt/latest/mptt.pdf
'파이썬 > Django' 카테고리의 다른 글
파이썬(Django) :: 페이지네이션으로 회원 목록 조회 API (0) | 2020.05.03 |
---|---|
파이썬(Django) :: Django-Crontab 정리 (0) | 2020.04.18 |
파이썬(Django) :: Select_related 와 Prefetch_related (0) | 2020.04.13 |
파이썬(Django) :: 회원가입 시 입력 값 검증 함수 (0) | 2020.03.21 |
파이썬(Django) :: 회원가입 시 이메일 인증 API (1) | 2020.03.21 |
Comments