我正在尝试确定是否有扩展基本查询的方法。我有一个getter,它将在我的models.py中返回查询,如下所示:
models.py
...
...
@property
def my_query(self):
list = session.query(Table1) \
.join(Table2.id) \
.join(Table3.name) \
.filter(Table1.id == self.id) \
.filter(table2.status != 2) \
return list
当我从视图中调用它时,它可以正常工作并显示正确的结果。
我遇到的问题是,我正在尝试实现一个下拉过滤器,该过滤器将扩展上面的getter基本查询,我已经尝试了很多事情,但它根本无法正常工作。
所以我的下拉列表将是两个选项
根据用户选择下拉列表,我将加入,过滤或扩展上面的基本查询
我尝试将上述查询设为label
,然后向其中添加查询,但是没有运气。我也研究了subquery
,但是当我尝试仅向my_query
添加过滤器并再次重新查询时,它给了我一个错误。
def my_query_filter(self, query):
session.query(self.my_query.filter(...)) #AttributeError: 'Query' object has no attribute 'is_clause_element'
#or even without filter
session.query(self.my_query) #AttributeError: 'Query' object has no attribute 'is_clause_element'
那么我该如何在上面扩展我的getter查询并向其添加内容呢?