2013-02-18 6 views
0

데이터베이스 용 django 모델을 설정 중이며 현재 데이터베이스 테이블을 모델에 직접 매핑하는 방법을 사용하고 있습니다. 그러나 어떤 경우에는 실제로 비교적 복잡한 관점에서 작업해야합니다.django의 모델 및 데이터베이스 뷰

class Entity(Models): 
    name = CharField() 

class LargeEntity(Entity): 
    size = FloatField() 

class SmallEntity(Entity): 
    type = ForeignKey(SmallEntityType) 

보고서 (및 양식) 보여줄 필요가있다 : 나는 관련 데이터베이스 테이블에서 병합 된 목록을 표시 할 필요가 (보고서가 아닌 데이터베이스) 테이블이 경우 특정 경우는

Entity name - entity.name 
Large/Small - 'Large' if entity is LargeEntity else 'Small' 
size/type - entity.size if entity is LargeEntity else 'type' 

이것은 SQL에서 CASE 문을 통해 수행 할 수 있지만, 내 데이터에서이 일이 많이 발생하기 때문에 차라리 더 멋진 솔루션을 찾을 수 있습니다.

보고서 형식을 변경하는 옵션이 없지만이를 구현하는 더 좋은 방법이있는 경우 데이터베이스를 변경할 수 있습니다.

: 각 개체 유형이 많은 속성을 포함하지 않는 경우 경우

답변

0

, 당신은 유형 또는 다른 무언가에 의해 서로 실체를 구별하는이 모델에 필요한 모든 필드와 하나 이상의 필드와 하나 개의 모델을 만들 수 있습니다
class Entity(Models): 
    NORMAL, LARGE, SMALL = 0, 1, 2 
    ETYPE = (
     (NORMAL, 'Normal'), 
     (LARGE, 'Large'), 
     (SMALL, 'Small'), 
    ) 
    entity_type = IntegerField(choices=ETYPE,...) 

    name = CharField() 
    size = FloatField() 
    smalltype = ForeignKey(SmallEntityType) 
    ...