首先,很抱歉,如果事实证明我要做的是在这里冒烟,我绝不是 DB 或 SQLA 专家。=)
我有两个类,Person 和 Organization,它们使用表继承从 Contact 继承。( Person.id 是 Contact.id 的一个 fkey ),它工作正常。
我想从搜索框中搜索并获取所有联系人的列表。通常,当我完成一系列事情时,我会这样做:
def build_query(self):
return self.session.query(Person)
def filter_query(self, query)
if self.search_form_values.get('name_last',None):
query = query.filter(
Person.name_last==self.search_form_values.get('name_last')
)
...
return query
然后在其他地方执行查询。问题是我想取回一个联系人对象列表,但我想过滤 Organization.name、Person.name_last 和 Person.name_first,所有这些都来自在搜索表单上的“名称”框中键入的值。我不知道如何用一个查询来做到这一点,甚至不确定它是否可能。不过,我肯定想避免两个单独的查询具有交错的结果。
是否有一些过滤功夫可以让我做到以上几点?IE
- 取回所有联系人:
- 有 name_last 或 name_first 匹配,如果联系人是一个人
- 如果联系人是组织,则名称匹配
谢谢
伊恩