나는이처럼 보이는 나무, 다형성 상속을 통해 반영했다 : 문제는 내가 반영 할 필요가있다SQLAlchemy의 중첩 된 상속/다형성 관계
class BaseModel(db.Model): # Table A in diagram
__tablename__ = "entities"
id = db.Column(db.BigInteger, primary_key=True, nullable=False, server_default=func.nextval('guid_seq'))
type_id = db.Column(db.SmallInteger, db.ForeignKey(EntityTypesModel.id))
__mapper_args__ = {
'polymorphic_identity':'entity',
'polymorphic_on':type_id,
'with_polymorphic':'*'
}
class BrandModel(BaseModel): # Table B, C, D in diagram
__tablename__ = 'brands'
id = db.Column(db.BigInteger, db.ForeignKey(StufffModel.id), primary_key=True, nullable=False)
name = db.Column(db.String, nullable=False)
__mapper_args__ = {
'polymorphic_identity':ET_BRAND,
}
: 같은 위대한 작품을
A
/ | \
B C D
A
/ | \
B C D
/ \
E F
여기서 D는 A의 다형성 하위 노드 일뿐만 아니라 lso 다형성 부모 E & F.
내가 선택해야하는 것처럼 보입니다. D는 다형성 자녀가 될 수도 있고 부모가 될 수도 있습니다. 둘 다일 수는 없습니다.
여기에 옵션이 있습니까?
는 편집 : 것 같습니다 있도록
그냥이를 묶어, 나는 나무를 평평하게 끝났다 : D 이제 사라
A
/ | \ \
B C E F
하고 제공하는 기능은 (아이들에 E &입니다 에프). 아마 공통 부분을 믹스 인 또는 뭔가 만들 것입니다.
불행하지만이 특정 문제에 더 많은 시간을 할애 할 수 없었습니다.
그래서이 보인다. 실제로 모델 D E F는 다른 열에 의해 구분됩니다. 아마도 type_inner_id라고 할 수 있습니다. 그러나 ModelD는 type_id 열의 ModelA와 관련하여 다형성을 유지해야합니다. – amirpc
나는 이것이 의미있는 방식이라고 생각하며 확실히 그것을 돼지 뒷받침이라고 부르지 않을 것입니다. 그레이트 당신은 당신을 위해 수용 가능한 솔루션을 발견. – van
어떻게 "Base Ricky (Base)"클래스의 ForeignKey를 BaseModel (Base)의 "entities"테이블로 묶을 수 있습니까? 그것은 계속 내게 주어집니다 : sqlalchemy.exc.NoReferencedTableError –