所以我在没有找到答案的情况下阅读了以下帖子:
我的模型使用JSONField来存储任意数据。
class Task(models.Model):
"""
Execution of a Test
"""
results = JSONField(max_length=1000, blank=True)
在python shell中,我可以打印这个字段,它呈现如下:
[{"name": "tata", "result": "toto"}]
我修改脱水方法以删除unicode,但我有以下结果:
**Dehydrate Method:**
def dehydrate_results(self, bundle):
results = json.dumps(bundle.obj.results)
return results
**Tastypie Result**
"results": "[{\"name\": \"Cash In\", \"result\": \"toto\"}]"
我无法在我的javascript应用程序中使用此对象...也许你可以解释我如何从tastypie获得“正常”的json输出:
**Wanted Tastypie Result**
"results": [{"name": "Cash In", "result": "toto"}]
感谢。
答案 0 :(得分:7)
如果我没有弄错的话,您不需要提供自定义脱水字段,因为bundle.obj.results
已经是数据库中的反序列化对象。
不是提供自定义dehydrate_results
功能,只需将results
字段类型指定为tastypie.fields.DictField
或tastypie.fields.ListField
,具体取决于您提供的数据存储
例如
from tastypie.fields import ListField
class MyResource(ModelResource):
results = ListField(attribute='results')
答案 1 :(得分:0)
字符串值只是编码为json,因此您需要在js:
中对其进行解码JSON.parse("[{\"name\": \"Cash In\", \"result\": \"toto\"}]")
这将为您提供正确的对象列表。