장고 개발 팁 - ORM 클래스 생성시 상속 전용으로 만들기

장고에서 ORM 을 사용하는 경우 Model 을 만들면 Class 객체 하나를 테이블로 만들어 버리게 된다. 그냥 추상 클래스로 상속해서 쓰게 하려는 경우 낭패가 된다 이때 사용하는 키워드가 Meta 라는 것이 있네.

 

from Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 )

class Meta 사용법

class 내에 "class Meta:" 라는 것을 하나 더 두고

abstract = True 로 속성을 설정하면, 이 class 는 DB 테이블로 변환되지 않고 상속에 쓸 수 있는 class 로 남겨둔다.

 

즉, TimeStampModel 에 보면 

"updated_at"

"created_at" 

이라는 필드가 다른 테이블에 거의 공통으로 사용되고 있어 이 부분을 한 곳에 정리해 두고 상속해서 쓰도록 하고 싶은데 

 

class Meta: 설정을 해 주지 않으면,

의도하지 않게 TimeStampModel 자체를 테이블로 인식해서 만들어 버려 테이블 조인 형태가 되버린다.

 

이를 해결 하기 위해서 알아둬야 한는 팁!!

 

카세트 복제는 더블테크가 있어야 했었는데....요즘은 너무 쉬워

Laura Balbarde 님의 사진, 출처: Pexels