django 如何动态使用Q查询函数

这个Q和F用得少,

需要时,总是独立的存在于那时,显得有些突兀,

这次想将filter,order,Q集合在一起,

查询了很多资料,还是有一些困难,

但即可以将Q查询比较优雅的动态生成。

比如:

        # 通过字典过滤,显得逼格高点
        filter_dict = dict()
        filter_dict['status'] = True
        filter_dict['node_port__gt'] = '0'

        if self.request.GET.get('search_pk'):
            search_pk = self.request.GET.get('search_pk')
            query_1 = Q(status=True)
            query_2 = Q(name__icontains=search_pk)
            query_2 = query_2 | Q(node_port__icontains=search_pk)
            query = query_1 & query_2
            return App.objects.filter(**filter_dict).filter(query)

在上面代码中,filter本身的字典和Q查询还是分成了两部分,

但比以前那种,看起来还是好一些了。

猜你喜欢

转载自www.cnblogs.com/aguncn/p/10362077.html