我试图在flask/sqlalchemy中创建一对多多态关系。其概念是使用授权表为某些数据提供临时数据。该表有两个字段,authorizable_id和authorizable_type。可授权的\u id引用它所引用的条目的id。它不是外键,因为它可以引用不同的表。authorizable_类型确定它引用的是哪个表。例如,对于文件,它是“file”。在
我已经看到了如何做类似的事情,但是sqlalchemy文档对于字段的角色是相当含蓄的。此外,它们还要求被引用的表(这里是文件)具有一个id,该id是一个外键,它引用保存关系的表(discriminator/id)。我做的是相反的,多态关系持有资产的id。我希望sqlalchemy有一个值,比如“polymorphic_field”,您可以在其中指明哪个字段名。我添加了下面的代码。非常感谢任何指导。谢谢您!在
class AuthorizableInterface(Model):
__mapper_args__ = {
'polymorphic_identity':'AUTHORIZABLE',
}
class Authorization(Model):
__tablename__ = 'authorizations'
token = Column(String(254), nullable=False)
...
authorizable_id = Column(Integer(), ForeignKey(AuthorizableInterface.id))
authorizable_type = Column(String(254), nullable=False)
__mapper_args__ = {
'polymorphic_on': authorizable_type,
'polymorphic_field' 'authorizable_id' // not a real thing, what i want to do
}
class File(AuthorizableInterface):
__tablename__ = 'files'
url = Column(Text(1024), nullable=False)
provider_id = Column(Integer(), ForeignKey('file_providers.id'))
__mapper_args__ = {
'polymorphic_identity':'FILE'
}
class AnotherAuthorizableThing(AuthorizableInterface):
...
__mapper_args__ = {
'polymorphic_identity':'THING'
}
目前没有回答
相关问题 更多 >
编程相关推荐