Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在django中使用Q表达式时,查询后没有搜索结果_Python_Django_Python 3.x_Django Rest Framework - Fatal编程技术网

Python 在django中使用Q表达式时,查询后没有搜索结果

Python 在django中使用Q表达式时,查询后没有搜索结果,python,django,python-3.x,django-rest-framework,Python,Django,Python 3.x,Django Rest Framework,我有以下基于类的视图,我已经实现了自定义查询功能,但是当我尝试搜索时,我没有得到结果。我在db中有员工详细信息的可用数据,但没有结果。到目前为止,这就是我的Q过滤器的样子 class PayslipSearch(ListAPIView): # queryset = Payslip.obejcts.all() serializer_class = PayslipDetailSerializer filter_backends = [SearchFilter] search_fields = ['e

我有以下基于类的视图,我已经实现了自定义查询功能,但是当我尝试搜索时,我没有得到结果。我在db中有员工详细信息的可用数据,但没有结果。到目前为止,这就是我的Q过滤器的样子

class PayslipSearch(ListAPIView):
# queryset = Payslip.obejcts.all()
serializer_class = PayslipDetailSerializer
filter_backends = [SearchFilter]
search_fields = ['employee__user__first_name',
                 'employee__user__last_name',
                 'basic_salary__salary_value',
                 # 'payment_mode',
                 # 'payslip_no',
                 # 'month_ending',
                 # 'deductions',
                 # 'allowances'
                 ]

def get_queryset(self, *args, **kwargs):
    queryset_list = Payslip.objects.all()
    # call GETs get to get your values
    query = self.request.GET.get("q")
    print(query)

    if query:
        queryset_list = Payslip.objects.filter(
            Q(employee__user__first_name__icontains=query) |
            Q(employee__user__last_name__icontains=query) |
            Q(basic_salary__salary_value__icontains=query)
            # Q(payment_mode__icontains=query) |
            # Q(payslip_no__icontains=query) |
            # Q(month_ending__icontains=query) |
            # Q(allowances__icontains=query) |
            # Q(deductions__icontains=query)
        ).distinct()

    return queryset_list

我是如何实施搜索的:

class EmployeeSearch(APIView):

    # custom dictionary

    def get(self, request, format=None):
        query = self.request.query_params["q"]

        if query:
            queryset_list = Employee.objects.filter(
                Q(user__first_name__icontains=query)
            ).values(
                'user__id', 'department', 'hr_number', 'salaries__salary_value',
                'tax_id_number', 'job_group', 'job_group_id',
                'identification_number',
                'joining_date', 'payslips',
                'user__last_name', 'user__first_name', 'user__email'
            )

        return Response(data=queryset_list, status=status.HTTP_200_OK)

似乎对我来说应该工作,可能是数据丢失,可能是参数丢失。请显示序列化程序(尽管我看不出真正的需要)