Модели от Json до django. Python ошибка типа данных - PullRequest
0 голосов
/ 01 августа 2020

У меня есть, когда я хочу преобразовать данные json в модели django. Как я могу решить эту проблему.

class Persons(models.Model):
rank = models.IntegerField()
employer = models.CharField(max_length=100)
employeesCount = models.IntegerField()
medianSalary = models.IntegerField()

создатель объекта:

for json in json_string:
Persons.objects.create(id=json['rank'], employer=json['employer'], employeesCount=json['employeesCount'], medianSalary=json['medianSalary'])

json читатель

f = open('data.json')
json_string = f.read()
f.close()

json файл: [{"rank" : 1, «работодатель»: «Walmart», «employeeCount»: 2300000, «medianSalary»: 19177}, {«rank»: 2, «работодатель»: «Amazon», «employeeCount»: 566000, «medianSalary»: 38466 }]

Ответы [ 2 ]

1 голос
/ 01 августа 2020

Ваш код ожидает словарь. Преобразуйте строку json с помощью встроенной библиотеки

import json
your_json = json.loads(f.read())
0 голосов
/ 01 августа 2020

Th json_strings - это просто строка , а не список словарей. Вы можете использовать модуль json [python -doc] * от до JSON десериализовать его:

from json import load as <b>json_load</b>

with open('data.json') as f:
    json_data = <b>json_load(</b>f<b>)</b>

Persons.objects.bulk_create([
    Person(
        id=record['rank'],
        employer=record['employer'],
        employeesCount=record['employeesCount'],
        medianSalary=record['medianSalary']
    )
    for record in json_data
])

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

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