1

所以我阅读了以下帖子但没有找到答案:

我的模型使用 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 应用程序中使用这个对象......也许你可以解释我如何从美味派中获得“正常”的 json 输出:

**Wanted Tastypie Result**
"results": [{"name": "Cash In", "result": "toto"}]

谢谢。

4

2 回答 2

7

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

无需提供自定义dehydrate_results函数,只需根据您存储的数据将results字段类型指定为 atastypie.fields.DictField或 a即可。tastypie.fields.ListField

例如。

from tastypie.fields import ListField

class MyResource(ModelResource):
    results = ListField(attribute='results')
于 2013-11-15T02:00:22.660 回答
0

字符串值是简单编码的json,所以需要在js里面解码:

JSON.parse("[{\"name\": \"Cash In\", \"result\": \"toto\"}]")

这将为您提供正确的对象列表。

于 2013-11-14T22:51:28.410 回答