Python-DRF返回行数,但不返回数据或结构

时间:2020-04-02 03:57:35

标签: python django django-models django-rest-framework

我是Python和Django编程的新手,我出于学习目的而使用的测试API遇到了这个问题。我的问题是,当我向我的API发出get请求时,得到以下响应:

[
    {},
    {}
]

我的应用程序的目录层次结构是这样(如您所见,我已经为Django模型创建了一个模块)

── __init__.py
├── __pycache__
├── adapters.py
├── admin.py
├── apps.py
├── managers.py
├── migrations
├── models
│   ├── __init__.py
│   ├── car.py
├── serializers.py
├── tests.py
├── urls.py
└── views.py

所以,在模型/ init 中,我有:

from .car import *

在models / car.py中:

class Size(models.Model):
description = models.CharField(max_length=200, null=True, blank=True)
height = models.DecimalField(max_digits=3, decimal_places=2, null=True, blank=True)
width = models.DecimalField(max_digits=3, decimal_places=2, null=True, blank=True)

在serializers.py中:

class SizeSerializer(serializers.Serializer):
class Meta:
    model = Size
    fields = ['description']

在views.py中:

class SizeList(APIView):
def get(self, request, format=None):
    size = Size.objects.all()
    serializer = SizeSerializer(size, many=True)
    return Response(serializer.data)

在我的数据库表中,我有2条记录,并且该应用程序正在返回2个空对象,我认为与数据库的连接正常,因为当我只有一个时,API仅返回了1个空对象。是什么原因造成的?我在同一项目中使用allauth实现了用户身份验证,并且工作正常,但是当我尝试实现这些自定义模型时,我只是没有正确的响应。感谢您的帮助!

PS:对不起,我是英国人。

2 个答案:

答案 0 :(得分:1)

尝试使用class SizeSerializer(serializers.ModelSerializer)

SerializersModelSerializer之间的区别基本上是:

ModelSerializer类与常规Serializer类相同,除了:

  • 它将根据模型自动为您生成一组字段。
  • 它将自动为序列化器生成验证器,例如unique_together验证器。
  • 它包括.create()和.update()的简单默认实现。

https://www.django-rest-framework.org/api-guide/serializers/#modelserializer

答案 1 :(得分:0)

您需要使用ModelSerializer

class SizeSerializer(serializers.ModelSerializer):
    ...