我遇到的问题是将使用 django.core.serializers 的序列化 Django 模型与其他一些数据混合,然后尝试使用 json.dumps 序列化整个事物。
示例代码:
scores = []
for indicator in indicators:
score_data = {}
score_data["indicator"] = serializers.serialize("json", [indicator,])
score_data["score"] = evaluation.indicator_percent_score(indicator.id)
score_data["score_descriptor"] = \
serializers.serialize("json",
[form.getDescriptorByPercent(score_data["score"]),],
fields=("order", "value", "title"))
scores.append(score_data)
scores = json.dumps(scores)
return HttpResponse(scores)
它返回一个对象列表,如下所示:
{
indicator: "{"pk": 345345, "model": "forms.indicator", "fields": {"order": 1, "description": "Blah description.", "elements": [10933, 4535], "title": "Blah Title"}}",
score: 37.5,
score_descriptor: "{"pk": 66666, "model": "forms.descriptor", "fields": {"order": 1, "value": "1.00", "title": "Unsatisfactory"}}"
}
我遇到的问题可以在 JSON 中看到,序列化的 Django 模型被包装在多组引号中。当我尝试做类似的事情时,这使得在客户端很难使用
indicator.fields.order
它评估为无,因为浏览器认为我正在处理某种字符串。
理想情况下,我希望有效的 JSON 没有使其不可读的冲突引用。类似于这样的对象列表:
{
indicator: {
pk: 12931231,
fields: {
order: 1,
title: "Blah Title",
}
},
etc.
}
我应该使用不同的数据结构、不同的序列化程序以不同的顺序执行此操作吗?