Почему мой обратный поиск 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/$']
Почему обратный поиск не работает?