【问题标题】:Django viewset error: 'QuerySet' object has no attribute 'title'Django 视图集错误:'QuerySet' 对象没有属性'title'
【发布时间】:2020-10-06 05:48:28
【问题描述】:

我正在尝试为 Course 模型创建一个 ViewSet(以简单地显示所有课程),但在尝试访问它时出现以下错误。一般来说,我是创建 ViewSets 和 Django 的新手,我做错了什么?

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

【问题讨论】:

    标签: python django model serialization


    【解决方案1】:

    您应该使用 many=True 进行序列化,因为查询集是可以包含零个、一个或多个元素的对象的集合

    serializer = CourseSerializer(queryset<b>, many=True</b>)

    有关详细信息,请参阅Dealing with multiple objects section [drf-doc]

    【讨论】:

    • 啊,这行得通,谢谢!很抱歉跑题了,但您是否也知道如何将某些内容传递给请求参数?
    • @SJ19:“将某些东西传递给请求参数”是什么意思?
    猜你喜欢
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 2023-03-11
    • 2021-08-05
    • 2017-06-22
    • 2013-05-10
    • 1970-01-01
    • 2021-05-08
    相关资源
    最近更新 更多