如何将列表值放入django的休息框架json响应中

时间:2015-01-07 13:22:12

标签: python json django rest django-rest-framework

在我的一个django项目中,我以这种方式设置了 django-rest-framework ,以便它返回以下类型的json响应:

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

到目前为止一切顺利。

问题是我需要将dl_url属性作为列表而不是字符串返回,以便它变为:

{
    "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个实例。

提前谢谢。

2 个答案:

答案 0 :(得分:1)

使用序列化方法将其转换为列表。为此,请使用drf 3.0中引入的to_representation方法(在以前的版本中称为transform或smth类似)。

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

答案 1 :(得分:-1)

试试这个:

old_response = {     "姓名":" John",     " last_name":" Smith",     "年龄":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(',')