DRF中'TranslateCategory'对象不可迭代错误求助
解决DRF中'TranslateCategory' object is not iterable错误
常见原因及修复步骤
1. 匹配视图类与接口类型
访问带主键的详情接口(如/api/translate/categories/1/)时,需使用RetrieveAPIView而非列表类视图(ListAPIView):
# views.py 错误示例 from rest_framework.generics import ListAPIView from .models import TranslateCategory from .serializers import TranslateCategorySerializer class TranslateCategoryDetail(ListAPIView): queryset = TranslateCategory.objects.all() serializer_class = TranslateCategorySerializer
修复后:
# views.py 正确示例 from rest_framework.generics import RetrieveAPIView from .models import TranslateCategory from .serializers import TranslateCategorySerializer class TranslateCategoryDetail(RetrieveAPIView): queryset = TranslateCategory.objects.all() serializer_class = TranslateCategorySerializer
2. 修正序列化器many参数
手动实例化序列化器时,单个对象无需添加many=True(该参数仅用于列表数据):
# views.py 错误示例 def category_detail(request, pk): category = TranslateCategory.objects.get(pk=pk) serializer = TranslateCategorySerializer(category, many=True) return Response(serializer.data)
修复后:
# views.py 正确示例 def category_detail(request, pk): category = TranslateCategory.objects.get(pk=pk) serializer = TranslateCategorySerializer(category) return Response(serializer.data)
3. 检查自定义视图方法返回值
若自定义get_object或get_queryset,需保证详情接口返回单个对象,列表接口返回QuerySet:
# views.py 错误示例 class TranslateCategoryDetail(RetrieveAPIView): serializer_class = TranslateCategorySerializer def get_queryset(self): return TranslateCategory.objects.get(pk=self.kwargs['pk']) # 返回单个对象而非QuerySet
修复后:
# views.py 正确示例 class TranslateCategoryDetail(RetrieveAPIView): serializer_class = TranslateCategorySerializer def get_object(self): return TranslateCategory.objects.get(pk=self.kwargs['pk']) # 用get_object返回单个对象
4. 核对URL路由绑定
确保详情路由绑定到详情视图类,而非列表视图:
# urls.py 错误示例 path('api/translate/categories/<int:pk>/', TranslateCategoryList.as_view(), name='category-detail')
修复后:
# urls.py 正确示例 path('api/translate/categories/<int:pk>/', TranslateCategoryDetail.as_view(), name='category-detail')
内容的提问来源于stack exchange,提问作者Dias Oralbekov
相关产品推荐
相关产品推荐

