Axios response.data пуст, когда django возвращает набор запросов с одним элементом

Я использую axios для получения некоторых данных из моего бэкэнд API, сделанного с помощью django. Происходит что-то очень странное, и я отлаживаю это уже несколько часов.

Это функция axios, которая получает данные:

function useGetProducts(category: string, subcategory: string, code:string){
    const [products, setProducts] = useState<Product[]>([]);
    useEffect(() => {
        axios.get(getQueryUrl(category, subcategory, code))
            .then(response => {
                console.log(response)
                setProducts(response.data);
            })
            .catch(error => {
                console.error(error);
            });
    },[]);
    return products;
}

А вот мой ProductView в django

class ProductView(viewsets.ModelViewSet):
    serializer_class = ProductSerializer

    def get_queryset(self):
        queryset = Product.objects.all()
        cat = self.request.query_params.get('category', None)
        subcat = self.request.query_params.get('subcategory', None)
        code = self.request.query_params.get('code', None)
        if cat and subcat and code:
            # Sanitize the name parameter using Django's ORM
            queryset = queryset.filter(code__exact=code)
        elif cat and subcat:
            queryset = queryset.filter(category__exact=cat, sub_category__exact=subcat)
        elif cat:
            queryset = queryset.filter(category__exact=cat)
        print(queryset)
        return queryset

Теперь дело в том, что когда queryset содержит только один элемент, response.data является пустым массивом, но когда queryset содержит более одного элемента, response.data содержит нужное количество элементов.

Метод getQueryUrl работает корректно. Я попытался ограничить вывод других наборов запросов, которые должны содержать более 1 элемента, до 1 и то же самое, пустой массив на стороне фронтенда.

Решение

ChatGPT также не помогло. В нем говорилось, что Django REST Framework сериализует одиночные объекты иначе, чем списки объектов, и говорилось, что переопределение метода list устранит проблему... но нет, не устранило.

Я очень верю, что проблема в API, скорее всего в django-rest-framework (DRF), но я новичок в django и не знаю, что может быть причиной этого. Буду благодарен за любую помощь.

Кстати, я использую конфигурации DRF по умолчанию.

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