我有一个带有动作的视图集,它已定义为向用户添加好友 . 但是我遇到了url的问题,在http://localhost:8000/accounts/users/mercer/add_friend/上发送了帖子查询并得到了这样的消息: add_friend() got an unexpected keyword argument 'username'
我的ViewSet:
class UserViewSet(viewsets.ModelViewSet):
queryset = CustomUser.objects.all()
serializer_class = UserSerializer
lookup_field = 'username'
http_method_names = ['get', 'patch', 'post']
@action(detail=True, methods=['post'])
def add_friend(self, request):
return Response('ok')
1 回答
根据Django Viewsets documentation on marking extra actions for routing:
当您声明
detail=True
时,您表示此操作将应用于CustomUser
对象而不是所有用户 . 我认为你已经在你的帖子网址中得到了这个,因为你似乎正在传递"mercer"作为你的对象用户名 . 因此,您还必须期望username
作为参数传递给您的操作方法: