Почему мой обратный поиск url с kwargs не работает на viewset action api?

Вот мой набор представлений с действием:

class RewardsQueryViewSet(UUIDModelViewSet):

queryset = RewardsQuery.objects.all()
serializer_class = RewardsQuerySerializer
ordering_fields = ("-created_at",)
http_method_names = [
    "post",
    "get",
]

def create(self, request, **kwargs):
    serializer = RewardsQuerySerializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    transaction = serializer.save()
    return Response(transaction)

@action(
    detail=True,
    methods=("get",),
    url_path="earned-rewards",
)
def earned_rewards(self, request, *arg, **kwargs):
    session = RewardsQuery.objects.get(uuid=self.kwargs["uuid"])
    transactions = Rewards.objects.filter(profile=session.profile)
    return Response({"results": transactions})

В urlconf я вижу эту запись:

api/<version>/ ^applications/(?P<client_id>[^/]+)/rewards-queries/(?P<uuid>[^/.]+)/earned-rewards/$ [name='rewards-query-earned-rewards']

но когда я пытаюсь выполнить обратный поиск, он терпит неудачу. Я пробовал оба варианта:

drf_reverse('rewards-query-earned-rewards', kwargs={'client_id': instance.application.client_id, 'uuid': str(instance.uuid)})

reverse('rewards-query-earned-rewards', kwargs={'client_id': instance.application.client_id, 'uuid': str(instance.uuid)})

django debug error:

Exception Type: NoReverseMatch
Exception Value:    
Reverse for 'rewards-query-earned-rewards' with keyword arguments '{'client_id': 'FVQI5U57tfCyDV99YjhF3ExdlpiObg5JASvy81Mu', 'uuid': '2057de0f-f5b4-4af4-aa99-ac3681cc6984'}' not found. 2 pattern(s) tried: ['api/(?P<version>[^/]+)/applications/(?P<client_id>[^/]+)/rewards-queries/(?P<uuid>[^/.]+)/earned-rewards\\.(?P<format>[a-z0-9]+)/?$', 'api/(?P<version>[^/]+)/applications/(?P<client_id>[^/]+)/rewards-queries/(?P<uuid>[^/.]+)/earned-rewards/$']

Почему обратный поиск не работает?

Вернуться на верх