Tastypie和JSON字段序列化问题

Ale*_*Grs 1 python django tastypie

所以我在没有找到答案的情况下阅读了以下帖子:

我的模型使用JSONField来存储任意数据.

class Task(models.Model):
    """
        Execution of a Test
    """
    results = JSONField(max_length=1000, blank=True)
Run Code Online (Sandbox Code Playgroud)

在python shell中,我可以打印此字段,它呈现以下内容:

[{"name": "tata", "result": "toto"}]
Run Code Online (Sandbox Code Playgroud)

我修改脱水方法删除unicode,但我有以下结果:

**Dehydrate Method:**
def dehydrate_results(self, bundle):
    results = json.dumps(bundle.obj.results)
    return results 

**Tastypie Result**
"results": "[{\"name\": \"Cash In\", \"result\": \"toto\"}]"
Run Code Online (Sandbox Code Playgroud)

我不能在我的javascript应用程序中使用此对象...也许你可以解释我如何从tastypie获得"正常"json输出:

**Wanted Tastypie Result**
"results": [{"name": "Cash In", "result": "toto"}]
Run Code Online (Sandbox Code Playgroud)

谢谢.

Aus*_*ips 7

如果我没有弄错,你不需要提供自定义脱水字段,因为bundle.obj.results它已经是数据库中的反序列化对象.

而不是提供自定义dehydrate_results函数,只需将results字段类型指定为a tastypie.fields.DictField或a tastypie.fields.ListField取决于您要存储的数据.

例如.

from tastypie.fields import ListField

class MyResource(ModelResource):
    results = ListField(attribute='results')
Run Code Online (Sandbox Code Playgroud)