在基类上使用polymorphic_identity时的where子句

时间:2019-06-21 10:30:44

标签: python sqlalchemy

基类A1包含polymorphic_identity(以及polymorphic_on),但是Query(A1)不会产生where子句,而Query(A2)(其中{{1 }}是A2的子类,它有自己的A1)。

尝试查找文档失败。我想我只是想念一些东西。

polymorphic_identity

在两种情况下我都希望有from sqlalchemy import Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import Query, configure_mappers Base = declarative_base() class A1(Base): __tablename__ = 'a1' id = Column(Integer, primary_key=True) poly_on = Column(String, nullable=False) __mapper_args__ = { 'polymorphic_on': poly_on, 'polymorphic_identity': 'a1', } class A2(A1): __mapper_args__ = { 'polymorphic_identity': 'a2', } configure_mappers() print(Query(A1)) # SELECT a1.id AS a1_id, a1.poly_on AS a1_poly_on # FROM a1 print(Query(A2)) # SELECT a1.id AS a1_id, a1.poly_on AS a1_poly_on # FROM a1 # WHERE a1.poly_on IN (:poly_on_1) 子句。

更新这可以通过注入WHERE的虚拟基类来实现,但是我想避免这种情况:我有数百个必须以这种方式进行更改的模型。

0 个答案:

没有答案