多相混合炼金术

2024-06-26 00:20:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下类层次结构(使用带有声明性基的SQLAlchemy):

class Item(DeclarativeBase):
    name = Column(String(30))


class DetailsMixin(object):
    details = Column(String(300))

class AItem(Item):
    ...

class BItem(Item, DetailsMixin):
    ...

class CItem(Item, DetailsMixin):
    ...

class Something(DeclarativeBase, DetailsMixin)
    ...

是否可以使用with_polymorhpic获取所有项并加载details列(如果存在),但不显式命名继承DetailsMixin的类的名称?你知道吗


Tags: name声明stringobject层次结构sqlalchemycolumndetails
1条回答
网友
1楼 · 发布于 2024-06-26 00:20:01
with_polymorphic(base = Item, classes = '*')

将加载从Item继承的所有类,至少在计算__mapper__参数时可见的类。因此,继承您的mixin的类将作为它们的实际类加载,从而使它们的mixed in列。你知道吗

如果您想知道如何基于mixin列执行查询,而不必显式地命名从DetailsMixin继承的类,那么我自己仍在努力解决这个问题。但澄清你的问题可能有助于找到答案。你知道吗

相关问题 更多 >