目前所有的数据是这样是正确的,但是当我点击第二页,且查询用户名为哈哈哈的时候就会出现接口找不到的问题(正常来说应该返回的是空列表,因为没有包含hahah用户的审计信息但是报错了,第一页就不会出现这个问题就能正常返回空)
请各位大佬基于指正,以下是我完整的后端代码
class SysAuditFilter(FilterSet):
action_type = filters.CharFilter(
field_name="action_type", lookup_expr="icontains", required=False
) # 模糊查询
user_name = filters.CharFilter(
field_name="user_name", lookup_expr="icontains", required=False
) # 模糊查询
class Meta:
model = SysAudit
fields = ['action_type', 'user_name'] # 定义可用的过滤字段
# 定义视图集
class SysAuditViewSet(viewsets.ModelViewSet):
queryset = SysAudit.objects.all()
serializer_class = SysAuditSerializer
filter_backends = (DjangoFilterBackend, OrderingFilter) # 使用过滤器和排序
ordering_fields = ('action_time',)
def get_queryset(self):
queryset = super().get_queryset() # 获取初始查询集
date_range = self.request.GET.getlist('dateRange[]') # 获取日期范围参数
# 调试输出,查看收到的参数
print("日期范围参数:", date_range)
# 处理日期范围过滤
if len(date_range) == 2: # 确保有两个时间点
start_time, end_time = date_range
queryset = queryset.filter(action_time__gte=start_time, action_time__lte=end_time)
elif not date_range: # 如果没有日期范围,则返回所有数据
print("日期范围为空,返回所有数据")
# user_name = self.request.GET.get('user_name', None)
# if user_name:
# queryset = queryset.filter(user_name__icontains=user_name)
# action_type = self.request.GET.get('action_type', None)
# if action_type:
# queryset = queryset.filter(action_type__icontains=action_type)
# 打印调试信息,查看过滤后的查询集
print("过滤后的查询集:", queryset)
# 返回最终的查询集,分页器会在后面处理
return queryset
不知道这个问题怎么解决?
相似问题