我正在使用基于联接的继承 - 我有User
(父)和CorporateUser
(子)模型。用户的polymorphic_identity为"user"
,而CorporateUser的多态为"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+"%"))
但重点是我得到了初始查询的过滤器。
感谢。
答案 0 :(得分:0)
.with_entities()
可以帮到你。它不会完全返回CorporateUser
,而只返回您定义的字段。
query = User.query.filter(User.name.like("%"+search_text+"%")) \
.filter(User.type == 'corporate_user') \
.with_entities(User.corporate_user)
查询结果中的每个项目都是定义了实体的元组。
当然,您的模型需要User.corporate_user
后退参考。根据您的问题,我不确定您是否拥有它。