Возвратите формат данных как DRF по умолчанию - PullRequest
0 голосов
/ 20 марта 2019

Я потратил слишком много времени, пытаясь выяснить, как отформатировать набор запросов, и чтобы drf возвращал его, например, как выглядит его запрос GET по умолчанию.

ех. Получить запрос выглядит, список объектов:

[{
        "id": 1093,
        "manytomanyrelation": [
            108793,
            108792,
            108791
        ],
        "count": 3,
},
{
        "id": 1092,
        "manytomanyrelation": [
            108793,
        ],
        "count": 5,
}]

Мой пост-запрос, который должен вернуть список объектов, как указано выше: код:

@list_route(methods=['post'])
def mymethod(self, request, *args, **kwargs):
    data = MyModel.objects.filter(**params)
    response = serializers.serialize('json', list(data))
    return HttpResponse(response, content_type='application/json')

Но это возвращает объекты с форматом pk, model, fields:

[{
    fields:{
            "manytomanyrelation": [
                108793,
                108792,
                108791
            ],
            "count": 3,
    }
    model: "app.mymodel"
    pk: 1093
},
{
    fields:{
            "manytomanyrelation": [
                108793,
            ],
            "count": 5,
    }
    model: "app.mymodel"
    pk: 1092
}]

Я удалил некоторые поля и имена, поэтому извините, если в данных есть что-то непоследовательное.

Есть ли способ отформатировать объект ответа так, чтобы он был похож на GET по умолчанию для drf?

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Вы можете сериализовать вашу модель (MyModel), где вы можете указать, как будет выглядеть объект в ответе.

Проверьте документы

0 голосов
/ 25 марта 2019

serializers.serialize форматирует объект в этом формате pk, fields.Проблема была в том, что мне нужно было использовать self.get_serializers, чтобы получить правильный класс сериализатора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...