문제

가 명시적 지원에 대한 하나의 테이블에서 기업을 얻지 Django?최근 소식에 따르면 기도를 개발하고 토론합니다.

이 있는 라이브러리/해킹에서 사용할 수 있습 반면을 캡처하는 기본적인 동작입니까?나는 계층 호텔 다른 개체입니다.정규를 들어의 구조 공사 직원과 클래스 서브 클래스의 유형에 대한 직원과 manager_id(parent_id)이 될 것이 좋은 근사치의 문제가 나는 제품입니다.

내 경우에,나는 생각을 나타내는 직원을 관리할 수 있는 다른 직원이 있는 동안 관리되는 다른 직원입니다.이 있지 않는 별도의 수업 관리자와 작업자는 이 하로 확산에서 테이블이 있습니다.서브 클래스도를 나타내는 것입 유형의 직원 프로그래머,회계사,판매,etc.고의 독립적인 누가 감독하는(좋아,내가 더 이상 일반적인 법인에서 어떤 존중하).

도움이 되었습니까?

해결책

현재는 두 가지 형태의 상속에 Django-MTI(모델 표 상속)와 ABC(추상 클래스).

튜토리얼 무슨 일이 일어나고 있는지에 대한 후드입니다.

참조할 수도 있는 공식에서 문서 모델속.

다른 팁

내가 생각하는 영업 이익에 대해 묻는 하나의 테이블 상속으로 여기에서 정의:

관계형 데이터베이스를 지원하지 않는 상속할 때,그래서 매핑에서 객체를 데이터베이스는 우리가 방법을 고려하는 우리의 좋은 상속의 구조에 관계형 테이블이 있습니다.매핑할 때,관계형 데이터베이스는 최소화하려고 결합할 수 있는 신속하게 산업을 처리할 때는 상속 구조에서 여러 테이블이 있습니다.단일 테이블을 상속도 모든 분야의 모든 종류의 기업 구조를 하나의 테이블.

즉,하나의 데이터베이스 테이블에 대한 전체 계층의 엔티티 클래스입니다.Django 지원하지 않는 종류의 유산입니다.

시 시도 하:

http://djangosnippets.org/snippets/2408/

에뮬레이션의"테이블당 계층"니다.k.니다."하나의 테이블 상속에서"Django.기본 클래스를 보유해야 모든 분야.그것은 서브 클래스는 허용되지 않을 포함하는 어떠한 추가 필드에 최적으로 그들어야 한 프록시입니다.

지 않을 정확하게"하나의 테이블 상속"지만,충분히 가까이 많은 상황입니다.

나는 당신이 무언가를 할 수 있는 가깝습니다.

가를 구현하는 솔루션은 이 문제에 대한,그리고 여기에 어떻게 해결된다:

class Citrus(models.Model)
    how_acidic = models.PositiveIntegerField(max_value=100)
    skin_color = models.CharField()
    type = models.CharField()

class TangeloManager(models.Manager)
    def get_query_set(self):
        return super(TangeloManager, self).get_query_set().filter(type='Tangelo')

class Tangelo(models.Model)
    how_acidic = models.PositiveIntegerField(max_value=100)
    skin_color = models.CharField()
    type = models.CharField()
    objects = TangeloManager()
    class Meta:
        # 'appname' below is going to vary with the name of your app
        db_table = u'appname_citrus'

이 있는 잠금 문제는...난 정말 어떻게 장고 핸들을 off 상단의 머리입니다.또한,나는 정말 못 테스트는 위의 코드,그것은 엄격하게 엔터테인먼트를위한 목적으로,희망에 당신을 넣어합니다.

이 될 수 있습의 사용: https://github.com/craigds/django-typed-models 그것은 보이는 약간의 구현을의 한 테이블 상속 하지만 그것은 제한이는 하위 클래스로 사용할 수 없는 추가 필드가 있습니다.

또한 포크는 주소의 문제가 되지 않을 만들 수 있는 추가 필드:https://github.com/KrzysiekJ/django-typed-models

업데이트:나는 포크할 수 있습 통합되었습에 돌아

여기에는 최근의 논의의 장고 개발자 메일링 목록에 대한 STI:https://groups.google.com/forum/#!msg/django-개발자/-UOM8HNUnxg/6k34kopzerEJ

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top