Python 将ModelSerializer与DRF和基于类的视图一起使用会返回属性错误

Python 将ModelSerializer与DRF和基于类的视图一起使用会返回属性错误,python,django,django-rest-framework,Python,Django,Django Rest Framework,我刚刚开始与DRF合作,我发现自己有点挣扎。我试图创建一个使用模型序列化程序的基于类的视图。但是,无论我尝试什么,我总是会遇到以下错误: “QuerySet”对象没有属性“code” 我的模型确实有这个属性,我已经确认查询集(作为值转储时)也有这个属性 型号.py class Category(models.Model): code = UUIDField(unique=True) name = models.CharField(max_length=100, null=True

我刚刚开始与DRF合作,我发现自己有点挣扎。我试图创建一个使用模型序列化程序的基于类的视图。但是,无论我尝试什么,我总是会遇到以下错误:

“QuerySet”对象没有属性“code”

我的模型确实有这个属性,我已经确认查询集(作为值转储时)也有这个属性

型号.py

class Category(models.Model):
    code = UUIDField(unique=True)
    name = models.CharField(max_length=100, null=True, blank=True, unique=True)
    parent_cat = models.ForeignKey('self', null=True, blank=True)

    def __unicode__(self):
        return self.name
urlpatterns = patterns('', url(r'^', views.CatView.as_view()))
class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category 

class CatView(APIView):
    def get(self, request, format=None):        
        queryset = Category.objects.all()
        serialized = CategorySerializer(queryset)

        return Response(serialized.data)
url.py

class Category(models.Model):
    code = UUIDField(unique=True)
    name = models.CharField(max_length=100, null=True, blank=True, unique=True)
    parent_cat = models.ForeignKey('self', null=True, blank=True)

    def __unicode__(self):
        return self.name
urlpatterns = patterns('', url(r'^', views.CatView.as_view()))
class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category 

class CatView(APIView):
    def get(self, request, format=None):        
        queryset = Category.objects.all()
        serialized = CategorySerializer(queryset)

        return Response(serialized.data)
视图.py

class Category(models.Model):
    code = UUIDField(unique=True)
    name = models.CharField(max_length=100, null=True, blank=True, unique=True)
    parent_cat = models.ForeignKey('self', null=True, blank=True)

    def __unicode__(self):
        return self.name
urlpatterns = patterns('', url(r'^', views.CatView.as_view()))
class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category 

class CatView(APIView):
    def get(self, request, format=None):        
        queryset = Category.objects.all()
        serialized = CategorySerializer(queryset)

        return Response(serialized.data)
如果我转储
Category.objects.all()调用的输出,我会看到以下数据:

[{'id': 1, 'code': '7889022e-4e03-4c27-860a-f07c2477db0c', 'parent_cat_id': None, 'name': 'Women'}, {'id': 2, 'code': '167c2578-b747-41f5-b2ad-1aa7e3f63952', 'parent_cat_id': 1, 'name': 'Clothing'}, {'id': 3, 'code': '176e0db1-1a4a-4cd3-a6f3-0cac07ab748c', 'parent_cat_id': 1, 'name': 'Dresses'}]
因此,我至少可以验证数据是否正确地来自我的模型。但是,当我尝试返回响应时,我看到以下错误:

AttributeError at /category/ 
'QuerySet' object has no attribute 'code'

从我所看到的一切,我可以看出它确实有这个属性。我哪里出错了?

错误消息是正确的:QuerySet没有
code
属性,只有单个类别实例有

当您将查询集传递给序列化实例而不是实例时,需要告诉它您正在为其提供一个集合,如所示:


你真的应该阅读该教程:除了向你展示你做错了什么之外,它还向你展示了做同样事情的更好方法(通过使用mixin或通用视图)。

非常感谢!我现在要去复习一下教程。