首页 > 解决方案 > django过滤器返回无限循环

问题描述

当我过滤一家公司的仓库时,它返回错误: RecursionError: maximum recursion depth exceeded in comparison

def destroy(self, request, *args, **kwargs):
    company = Company.objects.get(owner=self.request.user)
    stores = Store.objects.filter(company=company.id)
    if len(stores) <= 1:
        return Response(data={'detail': 'At least one storehouse is required'}, status=status.HTTP_400_BAD_REQUEST)
    return self.delete(request, *args,**kwargs)

标签: django

解决方案


如果您正在使用,DestroyAPIView则调用self.delete()会将其返回到destroy 方法。而不是self.delete()你应该调用 super 方法。

def destroy(self, request, *args, **kwargs):
    company = Company.objects.get(owner=self.request.user)
    stores = Store.objects.filter(company=company.id)
    if len(stores) <= 1:
        return Response(data={'detail': 'At least one storehouse is required'}, status=status.HTTP_400_BAD_REQUEST)
    return super().destroy(request, *args,**kwargs)

推荐阅读