Django 使用过滤器中的信息修改TastyPie资源查询集

Django 使用过滤器中的信息修改TastyPie资源查询集,django,tastypie,Django,Tastypie,在这种情况下,我希望根据传入的过滤器修改资源的查询集 我之所以希望这样做,是因为某些过滤器需要将昂贵的操作添加到queryset中,并且我只希望在用户请求相关过滤器时执行这些操作 文档()向您展示了如何使用get\u object\u list(可以访问请求)修改查询集 我想做一些类似的事情: 类MyResource(模型资源): 有什么想法吗?如果我可以在不中断其余请求/响应周期的情况下,从get\u object\u列表中构建过滤器,这可能会解决我的问题。任何方向都行。希望有人能给出更好的答

在这种情况下,我希望根据传入的过滤器修改资源的查询集

我之所以希望这样做,是因为某些过滤器需要将昂贵的操作添加到queryset中,并且我只希望在用户请求相关过滤器时执行这些操作

文档()向您展示了如何使用
get\u object\u list
(可以访问请求)修改查询集

我想做一些类似的事情:

类MyResource(模型资源):


有什么想法吗?如果我可以在不中断其余请求/响应周期的情况下,从get\u object\u列表中构建过滤器,这可能会解决我的问题。任何方向都行。

希望有人能给出更好的答案,但是: 我检查了
request
对象,发现它有一个request['GET']字段,用于存储
queryDict

因此,如果您调用
localhost:8000/api/dosomething?first\u name=stevie&last\u name=wonder

然后
请求['GET'].keys()
将返回
['first\u name','last\u name']

就我而言,这已经足够了。您可能希望将其传递给self.build\u过滤器,但我不需要这样做

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