如何将列表值放入 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
在我的一个 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