Lei Zhang

时光已逝永不回,
往事只能回味。
... ...
春风又吹红了花蕊,
你已经也添了新岁。

▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 96%



将Django的QuerySet序列化为JSON

2018-02-27 » Python / Django

模型示例

一个商品的分类模型,只有主键和分类名称:

向该表中插入3条数据:

django.core.serializers

文档详见:https://docs.djangoproject.com/en/1.11/topics/serialization/#serializing-django-objects

以 serializers 说明文档为例,我们现在用它来序列化 Category 模型所返回的 QuerySet。

请记住!serializers 只用于序列化 Django 的 QuerySet!

实际开发中,我们不会将表中所有字段全部查询出来,当然现在的 Category 模型当中除了主键,只有一个 name 字段,如果你需要查询某个或某几个字段,你可能想到使用 values()

不要使用 serialize 来序列化 values() 所返回的值,QuerySet 经过 values() 方法后,它将不再是一个 QuerySet!

请使用 fields 来查询指定字段:

json

按照上述方法,的确可以获得一个 JSON,但是数据结构可能并不符合一个 API 该有的样子,它会将 model、pk 等完全暴露出来,我们仍需要解决这个现象。

使用 json.dumps() 序列化查询结果后:

参考资料

Django Serialize Queryset to JSON to construct RESTful response with only field information and id

Converting a django ValuesQuerySet to a json object

展开选填信息