python - CharField 类型的对象不是 JSON 可序列化的
问题描述
我正在通过尝试构建想到的东西来学习 Django。现在我正在尝试构建 Django rest API,它从 postgres 数据表中返回项目或所有项目。
模型.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']
视图.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
解决方案
您在 AdModel 类的 id 字段中遗漏了一对括号,并且在每个字段之后也不需要“,”:
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)
推荐阅读
- vb.net - 使用 Visual Basic 在 DateTime 中使用变量
- javascript - fs.createReadStream 的问题
- python - Lark 转换器在解析多个语句时返回 Tree
- iteration - 计算能力的迭代解决方案
- apache-spark - 如何在不发生写入的情况下评估累加器?
- python - 在 Python 的静态方法中调用实例方法
- c++ - 防止返回时复制对象
- json - 使用 PostgreSQL 分析和格式化 JSON
- fasm - fasmg:无法执行二进制文件:执行格式错误
- reactjs - 在 headerFilter 中反应制表符选择