ポリモーフィック継承を介して反映された、次のようなツリーがあります。
A
/ | \
B C D
それは次のようにうまく機能します:
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
/ \
E F
ここで、D は A のポリモーフィックな子であるだけでなく、E と F のポリモーフィックな親でもあります。
D はポリモーフィックな子になるか、親になるかのどちらかを選択する必要があるようです。両方になることはできません。
ここにオプションはありますか?
編集:
これを結び付けるために、最終的にツリーを平らにして、次のようにしました。
A
/ | \ \
B C E F
D はなくなり、提供された機能は子 (E & F) にあります。共通部分はミックスインか何かにしようかな。
残念ながら、この特定の問題にこれ以上時間を割くことができませんでした。