Django присвоение данных в json сериализаторах - PullRequest
0 голосов
/ 14 января 2020

Мой взгляд возвращает JSON ответ, как показано ниже. Я хочу назначить другой ключ, ниже pk или просто создать новый массив с именем. Как это возможно?

   device = Device.objects.all().filter(application_id=application_id)
            data = serializers.serialize('json', device)
            return HttpResponse(data, content_type='application/json')

JSON ответ:

[ 
{ 
"model":"applications.device",
"pk":13,
"fields":{ 
"name":"WaterAMRK27",
"category":"WaterAMR",
"application_id":13,
"description":"WaterAMR A27",
"created_at":"2019-12-04T14:19:58.430Z",
"updated_at":"2020-01-14T09:10:40.053Z"
}
}
]

1 Ответ

1 голос
/ 15 января 2020

Если вы хотите сделать это только с django .core.serializer, единственный способ - это загрузить строку, кодированную json, вручную обновить поля и затем вывести этот диктовку обратно в json.

Пример:

import json
device = Device.objects.all().filter(application_id=application_id)
data = serializers.serialize('json', device)
decoded = json.loads(data)
for each in decoded:
    each.update({'some_custom_field': each['pk'] ** 2})  # do whatever you want here
new_data = json.dumps(decoded)
return HttpResponse(new_data, content_type='application/json')

Это не совсем понятно, для лучшего решения вы можете использовать сериализаторы Django -rest-framework с to_representation метод для таких проблем.

Подробнее об этом можно прочитать здесь: https://www.django-rest-framework.org/api-guide/serializers/

...