List API 视图返回空对象列表

Nav*_*een 3 django django-rest-framework

我正在尝试使用 generics.ListApiView 来获取对象列表,这是我的序列化器

class SitesSerializer(serializers.Serializer):
    class Meta:
        model = models.Sites
        fields = '__all__'
Run Code Online (Sandbox Code Playgroud)

模型

# domain name without www
class Sites(models.Model):
    SiteName = models.CharField(max_length=50)
    DomainName = models.CharField(max_length=50, primary_key=True)
    Currency = models.CharField(max_length=20)
    CurrencySymbol = models.CharField(max_length=10)
    SiteGroup = models.CharField(max_length=50, choices=SHOPZY_SITE_CHOICES,
                                 default=AMAZON)
Run Code Online (Sandbox Code Playgroud)

这是我的视图类

class SitesView(generics.ListAPIView):
    queryset = Sites.objects.all()
    serializer_class = SitesSerializer
Run Code Online (Sandbox Code Playgroud)

但是我没有得到站点对象的列表,而是得到了一个充满空对象的列表,上面代码产生的输出是

[
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {}
]
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题吗?为什么其余框架无法显示站点对象的字段?

JPG*_*JPG 8

问题出在你的SitesSerializer班级上。

你应该使用serializers.ModelSerializer而不是serializers.Serializer

class SitesSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Sites
        fields = '__all__'
Run Code Online (Sandbox Code Playgroud)