Согласно документации Django Viewsets по маркировке дополнительных действий для маршрутизации :
Как и обычные действия, дополнительные действия могут быть предназначены как для отдельного объекта, так и для всей коллекции.Чтобы указать это, установите аргумент detail в True или False.Маршрутизатор настроит свои шаблоны URL соответственно.Например, DefaultRouter настроит подробные действия так, чтобы они содержали pk в своих шаблонах URL.
Когда вы объявили detail=True
, вы указываете, что это действие будет применено в объекте CustomUser
вместо всехваши пользователи.Я думаю, у вас есть это в вашем посте URL, так как вы, кажется, передаете "mercer" в качестве имени пользователя вашего объекта.Таким образом, вы также должны ожидать, что username
будет передан в качестве аргумента в вашем методе действия:
@action(detail=True, methods=['post'])
def add_friend(self, request, username=None):
# your code
return Response('ok')