【发布时间】:2018-01-12 15:38:33
【问题描述】:
我有一种情况,我想根据传入的过滤器修改资源的查询集。
我想要这个,因为某些过滤器需要将昂贵的操作添加到查询集中,并且我只想在用户请求相关过滤器时才执行它们。
文档 (HERE) 向您展示了如何使用 get_object_list(可以访问请求)修改查询集。
我想做这样的事情:
类 MyResource(ModelResource):
def get_object_list(self, request):
current_qs = super(MyResource, self).get_object_list(request)
current_filters = SOMEHOW_GET_FILTERS(request)
if 'name' in current_filters:
current_qs = current_qs.annotate(best_friend=RawSQL("COMPLICATED SQL QUERY"))
return current_qs
有什么想法吗?如果我可以在不中断请求/响应周期的其余部分的情况下从 get_object_list 执行 build_filters,那可能会解决我的问题。任何方向表示赞赏。
【问题讨论】: