如何将列表值放入 Django 休息框架 json 响应

How to put list values in django's rest framework json response

在我的一个 Django 项目中,我设置了 django-rest-framework 以便它 return 具有以下类型的 json 响应:

{
    "name": "John", 
    "last_name": "Smith", 
    "age": 35, 
    "dl_url": "[u'http://domain.com/file1', u'http://domain.com/file2']"
}

到目前为止一切顺利。

问题是我需要 return dl_url 属性作为 list 而不是 string 这样就变成了:

{
    "name": "John", 
    "last_name": "Smith", 
    "age": 35, 
    "dl_url": [u'http://domain.com/file1', u'http://domain.com/file2']
}

最好的方法是什么?

请注意,我将链接作为 models.TextField(null=True, blank=True) 实例存储在我的 models.py 中。

提前致谢。

试试这个:

old_response = { "name": "John", "last_name": "Smith", "age": 35, "dl_url": "[u'http://domain.com/file1', u'http://domain.com/file2']" }

new_response = old_response

new_response['dl_url'] = new_response['dl_url'][1:-1].split(',')

只需使用序列化程序方法将其转换为列表即可。为此,请使用 drf 3.0 中引入的 to_representation 方法(在以前的版本中它被称为 transform 或类似的东西)。

def to_representation(self, instance): ret = super(UserSerializer, self).to_representation(instance) ret['dl_url'] = ret['dl_url'].split(',') return ret