2013-10-08 7 views
4

На самом деле я определил модель сериализатору:Названный массив JSON в Django REST Framework

class MyObjectSerializer(serializers.ModelSerializer): 
    class Meta: 
    model = MyObject 
    fields = ('id', 'name',) 

которые готовят для меня JSON réponse в формате:

[ 
    { "id": 1, "name": "Object One"}, 
    { "id": 2, "name": "Object Two"} 
] 

Как я должен изменить свой класс сериализатора, чтобы получить JSON в формате:

{ 
    "results": 
    [ 
    { "id": 1, "name": "Object One"}, 
    { "id": 2, "name": "Object Two"} 
    ] 
} 

Есть ли у вас какие-либо рекомендации или ссылки на документацию django-rest-framework, где ca n Я нахожу описание этой проблемы?

+1

Я не знаю, есть ли возможное встроенное решение, но почему бы вам не создать собственный диктофон, например 'results = {" results ": json_from_serializer}' ?? –

ответ

0

Посмотрите на метод list()here.

Предполагая, что вы не используете данные разбитым на страницы (которые вы вопрос implys) это по сути просто делает это:

def list(self, request, *args, **kwargs): 
    self.object_list = self.filter_queryset(self.get_queryset()) 
    serializer = self.get_serializer(self.object_list, many=True) 
    return Response(serializer.data) 

Итак, вам просто нужно переопределить, чтобы использовать свой собственный стиль, а ...

def list(self, request, *args, **kwargs): 
    self.object_list = self.filter_queryset(self.get_queryset()) 
    serializer = self.get_serializer(self.object_list, many=True) 
    return Response({'results': serializer.data}) 
+0

Спасибо Том. Это то, что я искал. – Grzegorz

Смежные вопросы