【发布时间】:2021-07-28 18:55:16
【问题描述】:
我正在通过尝试构建想到的东西来学习 Django。现在我正在尝试构建 Django rest API 从 postgres 数据表中返回项目或所有项目。
models.py
class AdModel(models.Model):
id = models.IntegerField
name = models.CharField(max_length=50),
address = models.CharField(max_length=50),
web = models.CharField(max_length=50),
class Meta:
db_table = 'mock_location_data'
序列化器.py
class AdSerializer(serializers.ModelSerializer):
class Meta:
model = AdModel
fields = ['id', 'name', 'address', 'web']
views.py
class AdAPIView(APIView):
def get(self, request):
queryset = AdModel.objects.all()
serializer_class = AdSerializer(queryset, many=True)
return Response(serializer_class.data)
在 GET 请求中,我收到内部服务器错误 500,“CharField 类型的对象不是 JSON 可序列化的”
在 views.py 中,如果将 fields = ['id', 'name', 'address', 'web'] 替换为
fields = '__all__'
我正在获取所有 id 字段
[ { "id": 1 }, { "id": 2 }, { "id": 3 },.....]
但没有其他数据
我正在使用 Django 3.1.5 和 DRF 3.12.2
【问题讨论】:
-
这里发生了一些事情,但最突出的是你的模型字段末尾有逗号,这会将它们变成元组,因此不是有效的模型字段
-
天哪,我怎么看不到这个。除了这个菜鸟的错误,我做错了什么吗?
-
唯一明显的是:不要定义
id字段,让 Django 自动为您创建一个,而您模型中的那个甚至没有被初始化/调用,所以我没有真的不知道它是如何工作的
标签: python django django-rest-framework