본문 바로가기
Python/Django

[Django] Abstract Model

by 혀나Lee 2016. 9. 29.

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

댓글