filterset 字段不适用于单个员工休假详细信息的多次休假,我该如何解决?
class LeaveApplicationGetUpdateView(RetrieveUpdateAPIView):
serializer_class = LeaveApplicationSerializers
queryset = LeaveApplication.objects.filter()
permission_classes = (IsAuthenticated, IsSuperUser)
filter_backends = [filters.OrderingFilter, DjangoFilterBackend]
filterset_fields = ['type', 'from_date', 'to_date']
def get(self, request, *args, **kwargs):
contact_inf = LeaveApplication.objects.filter(employee__code=self.kwargs.get('code')) # will be refactor
if contact_inf:
return Response({
'success': True,
'message': 'Successfully',
'data': LeaveApplicationSerializers(contact_inf, many=True).data
}, status=200)
else:
return Response({
'success': False,
'message': 'Not Found'
}, status=200)
答案 0 :(得分:0)
这是因为您没有调用 self.get_queryset()
来获取 LeaveApplication
。所以它使得过滤器后端类不被调用。
这可能是您的解决方案:
def get(self, request, *args, **kwargs):
contact_inf = self.get_queryset().filter(employee__code=self.kwargs.get('code'))
最好改变一下:
queryset = LeaveApplication.objects.filter()
为此:
queryset = LeaveApplication.objects.all()
还有这个:
if contact_inf:
为此:
if bool(contact_inf):
见this
<块引用>此外,如果 some_queryset 还没有被评估,但你知道它会在某个时候,那么使用 some_queryset.exists() 将做更多的整体工作(一个存在检查的查询加上一个额外的到以后检索结果)而不是使用 bool(some_queryset),后者检索结果,然后检查是否有返回。