2013-04-23 4 views
0

SQLAlchemy에서 간단한 조인 상속을받은 경우 수퍼 클래스의 인스턴스를 하위 클래스로 "캐스팅"하는 가장 간단한 방법은 무엇입니까?합계 상속을 사용하여 SQLalchemy의 부모 인스턴스에서 자식 인스턴스를 캐스팅하는 방법

확실한 방법은 수퍼 클래스의 판별자를 확인한 다음 적절한 하위 클래스를 기반으로 쿼리를 실행하는 것입니다. 그러나 그것을하는 더 간단한 방법이어야하는 것처럼 보입니다.

+0

실제로 달성하고자하는 것은 무엇입니까? 나는 왜 당신이 캐스트를하고 싶어하는지 이해하지 못한다. 나는 당신이 실제로하려고하는 것에 따라 그것을하는 것이 더 나을지 모른다. – Endophage

+0

어떤 하위 클래스인지 미리 알지 못하기 때문에 부모 쿼리를 통해 ID를 받고로드합니다. 그런 다음 해당 부모 인스턴스를 올바른 하위 클래스의 인스턴스로 변환하여이 클래스 인스턴스와 해당 특성 및 메서드를 직접 작업 할 수 있습니다. –

답변

0

기존 부모 인스턴스를 캐스팅 할 수있는 방법을 찾지 못했지만 SQLalchemy에는 여러 위치에서 디스크립터를 기반으로 부모와 자식의 특성 조합이있는 glommed 개체를 반환하는 데 사용할 수있는 "with_polymorphic"이 있습니다. . 부모님의 클래스 __mapper_args__

"with_polymorphic": "*" 

을 지금 부모에 대한 쿼리는 속성과는 될 일이 중 아이 클래스의 값을 갖는 객체를 반환

그래서 덧붙였다.

이 방법이 최선이며 유일한 방법입니까?

관련 문제