簡體   English   中英

如何在Django-rest-framework中序列化列表?

[英]how can I serializer a list in django-rest-framework?

我想序列化一個對象列表,
我嘗試這樣:

序列化器/task_list.py

from rest_framework import serializers

class TaskListSerializer(serializers.Serializer):
>---id = serializers.CharField()
>---user_id = serializers.CharField()  

然后我給序列化器一個命令,它可以工作:

from task_list import TaskListSerializer as ts
result = ts({'id':1, 'user_id': 2})    
print result.data
{'user_id': u'1', 'id': u'1'}

對字典有好處,

現在我想序列化一個列表,像這樣:

result = ts([{'id':1, 'user_id': 1}])
print result.data

它給我一個錯誤:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/var/data/users/chenc3/opt/websoc/lib/python2.6/site-packages/rest_framework/serializers.py", line 487, in data
    ret = super(Serializer, self).data
  File "/var/data/users/chenc3/opt/websoc/lib/python2.6/site-packages/rest_framework/serializers.py", line 223, in data
    self._data = self.to_representation(self.instance)
  File "/var/data/users/chenc3/opt/websoc/lib/python2.6/site-packages/rest_framework/serializers.py", line 447, in to_representation
    attribute = field.get_attribute(instance)
  File "/var/data/users/chenc3/opt/websoc/lib/python2.6/site-packages/rest_framework/fields.py", line 418, in get_attribute
    raise type(exc)(msg)
AttributeError: Got AttributeError when attempting to get a value for field `id` on serializer `TaskListSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `list` instance.
Original exception text was: 'list' object has no attribute 'id'.  

我該如何解決?

您需要添加many=True例如:

result = ts([{'id':1, 'user_id': 1}], many=True)
print result.data

在這里了解更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM