В настоящее время у меня есть модель Post с полями "title" и "summary". Я извлекаю все сообщения и возвращаю их как JSON как часть интерфейса API RESTful.
Здесь основной подход
from django.core import serializers
def list_posts(request):
posts = Post.objects.filter(owner=authenticated_user)
serialized = serializers.serialize("json", posts, fields=('title', 'summary'))
return HttpResponse(serialized, mimetype='application/json')
И я получаю следующий ответ, когда я посещаю соответствующий маршрут.
Текущий ответ
[{"pk": 4, "model": "api.post", "fields": {"summary": "Testing", "title": "My Test"}}, {"pk": 5, "model": "api.post", "fields": {"summary": "testing again", "title": "Another test"}}]
Это технически содержит всю информацию, которую мне нужна клиентская сторона для создания моделей (я использую Backbone и могу использовать collection.parse для построения того, что мне нужно, но серверная сторона должна отвечать за структурирование ответа хорошо). Что меня беспокоит, так это то, что он не похож на стандартные ответы API, которые я привык видеть в авторитетных API. Я думаю, что ответ JSON, подобный следующему, будет более "стандартным".
Желаемый ответ
[{'summary': 'Testing', 'id': 4, 'title': 'My test'}, {'summary': 'My Test', 'id':5, 'title': 'Another test'}]
Выход из сериализации не кажется правильным для возврата коллекции экземпляров модели в JSON в качестве ответа от вызова API, и это кажется довольно распространенной потребностью. Я хотел бы вернуть данные полей вместе с id (или pk, если он должен быть вызван pk).