我正在尝试修改ViewSet的列表方法。
仅当条件满足时,我才需要返回数据。否则应调用默认行为。
def list(self, request):
"""Allow profile listing only for admin and super admins."""
if request.user.is_authenticated and request.user.user_type == constants.Constants.ADMIN:
#invoke default behaviour
pass
else:
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
但是如果条件通过,此代码将不起作用。
我是Django和DRF的新手,是否有更好的方法来做到这一点?或者我该如何解决以上代码?
答案 0 :(得分:2)
如果要使用默认行为,则需要调用return super().list(request, *args, **kwargs)
而不是pass
。
我也不知道403是否比405状态代码好? 所以看起来像这样:
def list(self, request, *args, **kwargs):
"""Allow profile listing only for admin and super admins."""
if request.user.is_authenticated and request.user.user_type == constants.Constants.ADMIN:
#invoke default behaviour
return super().list(request, *args, **kwargs)
else:
return Response(status=status.HTTP_403_FORBIDDEN)