結合された継承テーブルからポリモーフィック ロードを作成しようとしています (Flask-Sqlalchemy を使用しています)。
class Sip(db.Model):
id = db.Column(db.Integer, primety_key=True)
identity = db.Column(db.String(10))
__mapper_args__ = {'polymorphic_identity': 'sip', 'polymorphic_on': identity}
class Device(Sip):
id = db.Column(db.Integer, db.ForeignKey('sip.id', ondelete='CASCADE'), primary_key=True)
__mapper_args__ = {'polymorphic_identity': 'dev'}
class Line(Sip):
id = db.Column(db.Integer, db.ForeignKey('sip.id', ondelete='CASCADE'), primary_key=True)
__mapper_args__ = {'polymorphic_identity': 'line'}
Device オブジェクトと Line オブジェクトが 1 つずつあります。そのようなクエリを作成しようとすると:
Sip.query.with_polymorphic(Device).all()
すべてのオブジェクトを返します
[<myapp.models.Device at 0x45cfc50>, <myapp.models.Line at 0x45cfa90>]
の引数として Line を使用した場合と同じ状況ですwith_polymorphic()
。テーブル「sip」には、必要なすべての ID が含まれています。確認できます。
>> Sip.query.with_polymorphic(Device).all()[0].identity
>> u'dev'
>> Sip.query.with_polymorphic(Device).all()[1].identity
>> u'line'
何が起こっているのかわかりません。すべてがドキュメントの例とまったく同じようです。ありがとう。