#django #django-rest-framework #django-mptt
#джанго #django-rest-framework #django-mptt
Вопрос:
У меня проблема с преобразованием объекта ‘TreeQuerySet’ в объект QuerySet
Это ошибка, которую я получаю при сериализации с использованием DRF
Ошибка атрибута при попытке получить значение для имени поля в SubCategoriesSerializer сериализатора. Поле сериализатора может быть названо неправильно и не соответствовать какому-либо атрибуту или ключу в экземпляре TreeQuerySet. Исходный текст исключения был:
Объект ‘TreeQuerySet’ не имеет атрибута ‘name’.
Сериализатор
class SubCategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = ('id',
'name',
'slug',
'views',
'title',
'description',
'avatar',
'color'
)
Представления Api
category = Category.objects.get(pk=1)
categories = category.get_children()
categories_serializer = SubCategorySerializer(categories, context={'request': request})
Ответ №1:
TreeQuerySet
на самом деле является подклассом QuerySet
categories = category.get_children()
возвращает несколько Category
объектов, но вы пытаетесь сериализовать один экземпляр, вместо этого вы должны сериализовать a QuerySet
с дополнительным параметром в serializer many=true
categories_serializer = SubCategorySerializer(categories, many=true, context={'request': request})