python - Django 视图集错误:'QuerySet' 对象没有属性'title'
问题描述
我正在尝试为 Course 模型创建一个 ViewSet(以简单地显示所有课程),但在尝试访问它时出现以下错误。一般来说,我是创建 ViewSets 和 Django 的新手,我做错了什么?
姜戈 2.2
错误
AttributeError: Got AttributeError when attempting to get a value for field `title` on serializer `CourseSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `QuerySet` instance.
Original exception text was: 'QuerySet' object has no attribute 'title'.
课程视图集
class CourseViewSet(viewsets.ModelViewSet):
def list(self, request):
queryset = Course.objects.all()
serializer = CourseSerializer(queryset)
return Response(serializer.data)
课程序列化器
class CourseSerializer(serializers.ModelSerializer):
class Meta:
model = Course
fields = (
'id',
'title',
'description',
'active',
'individual_result',
'course_duration',
'video',
'manager_id'
)
模型/课程
class Course(models.Model):
title = models.CharField(max_length=255, blank=False, null=False)
description = models.CharField(max_length=255, blank=True, null=True)
active = models.BooleanField(default=True)
individual_result = models.BooleanField(default=False)
course_duration = models.CharField(max_length=255, blank=True, null=True)
video = models.CharField(max_length=255, blank=True, null=True)
manager_id = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
def __str__(self):
return self.title
解决方案
您应该使用 序列化many=True
,因为查询集是可以包含零个、一个或多个元素的对象的集合:
serializer = CourseSerializer(queryset, many=True)
有关更多信息,请参阅处理多个对象部分 [drf-doc]。