我正在尝试从连接的继承表中进行多态加载(我使用 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 对象。当我尝试进行这样的查询时:
Sip.query.with_polymorphic(Device).all()
它返回所有对象
[<myapp.models.Device at 0x45cfc50>, <myapp.models.Line at 0x45cfa90>]
当我使用 Line 作为with_polymorphic()
. 表“sip”包含所有必需的身份,我可以检查一下:
>> Sip.query.with_polymorphic(Device).all()[0].identity
>> u'dev'
>> Sip.query.with_polymorphic(Device).all()[1].identity
>> u'line'
我只是不知道发生了什么事。一切似乎都与文档示例完全相同。谢谢。