Abstract Model
Django model을 작성하다 보면 여러 테이블에 같은 형식의 필드(컬럼)이 있는 경우가 있다.
이럴 땐, Abstract Model(추상 모델)을 만들어 상속받으면 된다.
기본 방식
from django.db import models class CommonInfo(models.Model): name = models.CharField(max_length=100) age = models.PositiveIntegerField() class Meta: abstract = True class Student(CommonInfo): home_group = models.CharField(max_length=5)
추상 클래스 만들기
추상 클래스 (Abstract Model)을 만들긴 쉽다. 상위의 클래스에 modles.Model을 상속받고 Meta 클래스에 abstract = True를 해주면 된다.
대신, 하의 클래스에서 Meta 클래스를 사용하고 싶을 때 이것또한 상속받아 사용해야 한다.
추가 방식
from django.db import models class CommonInfo(models.Model): name = models.CharField(max_length=100) age = models.PositiveIntegerField() class Meta: abstract = True class Student(CommonInfo): home_group = models.CharField(max_length=5) class Meta(CommonInfo.Meta): managed = False db_table = 't_student'
CommonInfo.Meta를 상속받아 사용
추가 정보
- managed = False : 데이터베이스에 테이블을 추가 및 삭제하지 않는다는 정보
- db_table = 'table_name' : 데이터베이스에 존재하는 테이블 네임
'Python > Django' 카테고리의 다른 글
[Django] uwsgi + nginx in ubuntu (0) | 2016.10.18 |
---|---|
[Django] Test (0) | 2016.10.12 |
[Django] Extra (0) | 2016.10.06 |
[Django] Filter vs Exclude (0) | 2016.10.04 |
[Django] Custom Model Fields (0) | 2016.09.29 |
댓글