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 по умолчанию.