Django Rest Framework Copeapi LinkLookupError

Я получаю LinkLookupError при попытке получить конечную точку, обслуживаемую Django Rest Framework. Эта ошибка возникает только после одного успешного запроса. Мой DRF view.py выглядит следующим образом:

class RecordViewSet(viewsets.ReadOnlyModelViewSet):
    """
    API endpoint that allows Records to be viewed or edited.

    """
    filter_backends = (SimpleRecordFilterBackend,)
    serializer_class = RecordSerializer
    permission_classes = (IsAuthenticated,)

    @action(detail=False, url_path='tagsum/(?P<account>[^/.]+)/(?P<tag>[^/.]+)')
    def tagsum(self, request, account, tag):
        if not account or not tag:
            return Response({'status': "need accoutn and tag"})
        sum =  Records.objects.filter(linkedaccount_id=account).filter(user_project=tag).aggregate(total=Sum('unblendedcost'))
        return Response({'sum': sum['total']})

    def get_queryset(self):
        q = Q()
        linkedaccount_id = self.request.query_params.get("linkedaccount_id") or ''
        user_project = self.request.query_params.get("user_project") or ''
        if linkedaccount_id:
            q &= Q(linkedaccount_id=linkedaccount_id)
        if user_project:
            q &= Q(user_project=user_project)
        return Records.objects.filter(q).annotate(Sum('unblendedcost'))

После модификации файла представления я вызываю $coreapi get http://localhost:8000/api/docs/ и вижу:

...
    records: {
        list([page], [linkedaccount_id], [productname], [user_project])
        tagsum(account, tag)
        read(id, [linkedaccount_id], [productname], [user_project])
    }
...

и после загрузки одной страницы, которая вызывает эту конечную точку, когда я запускаю ту же команду, я вижу такой вывод:

...
    records: {
        tagsum: {
            read(account, tag)
        }
        list([page], [linkedaccount_id], [productname], [user_project])
        read(id, [linkedaccount_id], [productname], [user_project])
    }
...

Обратите внимание, что метод tagsum теперь имеет вложенный метод read. Вызовы к конечной точке теперь возвращают следующую ошибку.

errors.js:10 Uncaught LinkLookupError: Invalid link lookup: ["records","tagsum"]
    at new LinkLookupError (errors.js:10)
    at lookupLink (client.js:19)
    at Client.action (client.js:38)
    at eval (ProjectTagBilling.js:40)
    at invokePassiveEffectCreate (react-dom.development.js:23482)
    at HTMLUnknownElement.callCallback (react-dom.development.js:3945)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:3994)
    at invokeGuardedCallback (react-dom.development.js:4056)
    at flushPassiveEffectsImpl (react-dom.development.js:23569)
    at unstable_runWithPriority (scheduler.development.js:468)

Любой совет будет принят с благодарностью.

Обходной путь, используйте fetch. 😞

HTML

    <script>
        const csrftoken = document.querySelector('[name=csrfmiddlewaretoken]').value;
    </script>

JS

    useEffect(() => {
        setIsLoading(true)
        fetch(`/api/records/tagsum/${'432399220289'}/${props.tag}/`, {
            headers: {'X-CSRFToken': csrftoken},
            mehtod: 'GET'
        }).then(response => response.json()).then(result => {
            setIsLoading(false)
            setSum(result.sum)
        })
    },[])
Вернуться на верх