Как сериализовать данные из celery в django rest framework

Я использую Celery - Redis - Django rest framework (DRF). Что я пытаюсь сделать:

  • DRF передает URL в задачу/функцию celery
  • Celery затем получает это изображение и применяет логику
  • Celery отправляет идентификатор нового созданного объекта
  • DRF извлекает экземпляр из сохраненного объекта, сериализует и отправляет его в react (проблема в этом шаге)

Я не могу распаковать и сериализовать сообщение из celery, чтобы я мог отправить его в качестве ответа.

Вот мой код:

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

class TestSet(viewsets.ModelViewSet):

    queryset = Test.objects.all()
    serializer_class = WebsiteURLSerializer

    def create(self, request, *args, **kwargs):
         serializer = WebsiteURLSerializer(data=request.data)

         if serializer.is_valid():

            url_site= serializer.validated_data['url']
            result = test_call.delay(url_site)

            result_unpacked = WebsiteURLSerializer(ModelName.objects.filter(pk=result.get()))
            #the below line seems return an empty response
            return Response(result_unpacked.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

@shared_task(name="values")
def test_call(url_image):
    model_instance = ModelName.objects.create()
    ..some logic
    model_instance.save()

    return model_instance.id

Ошибка была в следующей строке

From:

result_unpacked = WebsiteURLSerializer(ModelName.objects.filter(pk=result.get()))

To:

result_unpacked = WebsiteURLSerializer(ModelName.objects.get(pk=result.get()))
Вернуться на верх