基于subtyp的Sqlalchemy过滤器

2024-09-28 01:27:20 发布

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

我使用的是基于连接的继承-我有User(父)和CorporateUser(子)模型。用户的多态身份是"user",企业用户的多态身份是"corporate_user"
我有这样一个问题
User.query.filter(User.name.like("%"+search_text+"%"))
有没有可能将只返回类型为CorporateUser的对象“链接”到这个查询?
现在我只添加另一个User.query.filter(User.name.like("%"+search_text+"%")).filter(User.type == 'corporate_user') 但这看起来不太优雅。你知道吗

我知道我可以做CorporateUser.query.filter(User.name.like("%"+search_text+"%"))
但关键是我得到了初始查询的过滤器。你知道吗

谢谢。你知道吗


Tags: text用户name模型search身份corporatefilter
1条回答
网友
1楼 · 发布于 2024-09-28 01:27:20

.with_entities()可以帮助你。它不会完全返回CorporateUser,而只返回您定义的字段。你知道吗

query = User.query.filter(User.name.like("%"+search_text+"%")) \
    .filter(User.type == 'corporate_user') \
    .with_entities(User.corporate_user)

查询结果中的每个项都是一个元组,其中定义了实体。你知道吗

当然,您的模型需要User.corporate_userback引用。根据你的问题,我不确定你有没有。你知道吗

相关问题 更多 >

    热门问题