슈퍼 클래스에 대해 단 하나의 쿼리만 만든 다음 django에서 해당 하위 클래스의 목록을 모두 얻을 수 있는 방법이 있습니까?[복제하다]

StackOverflow https://stackoverflow.com//questions/9674046

문제

가능한 중복:
Django 모델 상속은 중앙 테이블을 쿼리합니다.

여기에 있는 공식 문서를 따르세요.
https://docs.djangoproject.com/en/dev/topics/db/models/#multi-table-inheritance

다음을 통해 Super of Restaurant인 장소를 쿼리할 수 있습니다.

p = Place.objects.filter(name="Bob's Cafe")

그렇다면 그 시점에서 반환된 객체가 하위 클래스 Restaurant 유형인지 확인하고 그렇다면 해당 하위 클래스 필드에 액세스할 수 있는 방법이 있습니까?

현재 내가 알 수 있는 것은 반환된 모든 개체가 Place 클래스이고 개체가 하위 클래스로 캐스팅되지 않기 때문에 해당 하위 클래스 속성과 메서드를 사용할 수 없다는 것입니다.

이 방법론이 가능하지 않은 경우 모든 하위 클래스 모델이 포함된 목록을 얻으려고 할 때 슈퍼 클래스를 추상화하고 쿼리 오버헤드를 최소화하려는 모범 사례는 무엇입니까?이론적으로는 각 하위 클래스에 대한 쿼리를 수행한 다음 목록을 결합할 수 있지만 날짜별로 해당 목록을 주문하려면 더 많은 작업을 수행해야 한다는 것을 이해합니다.

도움이 되었습니까?

해결책

그렇다면 그 시점에서 반환된 객체가 하위 클래스 Restaurant 유형인지 확인하고 그렇다면 해당 하위 클래스 필드에 액세스할 수 있는 방법이 있습니까?

Place 모델을 쿼리한 경우 반환된 개체는 MTI 관련 하위 클래스에 대한 지식이 없는 Place 인스턴스입니다.하위 클래스에 아래쪽으로 연결하려면 슈퍼클래스에 필드를 제공해야 합니다.보다 Django에서 다중 테이블 상속 디자인을 일반화하기

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