Объект ‘TreeQuerySet’ не имеет атрибута ‘name’

#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})