Estou tentando inserir um arquivo json no banco de dados, mas aparece um erro. Não sei se tem algum erro no json ou no model.
Arquivo json:
[
{
"model": "cursos.Curso",
"pk": 1,
"fields": {
"nome": "Sífilis: Vigilância Epidemiológica",
"descricao": "O módulo Sífilis: Vigilância Epidemiológica tem como objetivo promover uma atualização dos profissionais de saúde acerca dos conceitos essenciais nessa área de conhecimento, com foco na sífilis.",
"objetivo": "Proporcionar conhecimentos para médicos, enfermeiros e demais profissionais de saúde acerca da Vigilância Epidemiológica e sua integração com a Atenção em saúde, com foco na sífilis adquirida, congênita e em gestantes.",
"idade_minima": 12,
"componentes": [
{
"nome": "Integração ao AVASUS e PEPSUS",
"carga_horaria": 30,
"ordem": 1
},
{
"nome": "Atenção à Saúde do Idoso na Atenção Primária à Saúde.",
"carga_horaria": 50,
"ordem": 2
}
]
}
}
]
models.py:
class Componente(models.Model):
nome = models.CharField(verbose_name='Nome do componente', max_length=150)
carga_horaria = models.IntegerField(verbose_name='Carga horária')
ordem = models.IntegerField()
class Curso(models.Model):
nome = models.CharField(verbose_name='Nome do curso', max_length=150)
descricao = models.TextField(verbose_name='Descrição')
objetivo = models.TextField(verbose_name='Objetivo')
idade_minima = models.IntegerField(verbose_name='Idade mínima')
componentes = models.ManyToManyField(Componente, related_name='curso', verbose_name='Componentes')
Erro:
Traceback (most recent call last):
File "C:\Users\JCAS1\PycharmProjects\djangoProject\test_command\manage.py", line 22, in <module>
main()
File "C:\Users\JCAS1\PycharmProjects\djangoProject\test_command\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "C:\Users\JCAS1\.virtualenvs\test_command\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
utility.execute()
File "C:\Users\JCAS1\.virtualenvs\test_command\lib\site-packages\django\core\management\__init__.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\JCAS1\.virtualenvs\test_command\lib\site-packages\django\core\management\base.py", line 414, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\JCAS1\.virtualenvs\test_command\lib\site-packages\django\core\management\base.py", line 460, in execute
output = self.handle(*args, **options)
File "C:\Users\JCAS1\PycharmProjects\djangoProject\test_command\core\management\commands\add_cursos.py", line 9, in handle
call_command('loaddata', 'cursos.json')
File "C:\Users\JCAS1\.virtualenvs\test_command\lib\site-packages\django\core\management\__init__.py", line 198, in call_command
return command.execute(*args, **defaults)
File "C:\Users\JCAS1\.virtualenvs\test_command\lib\site-packages\django\core\management\base.py", line 460, in execute
output = self.handle(*args, **options)
File "C:\Users\JCAS1\.virtualenvs\test_command\lib\site-packages\django\core\management\commands\loaddata.py", line 102, in handle
self.loaddata(fixture_labels)
File "C:\Users\JCAS1\.virtualenvs\test_command\lib\site-packages\django\core\management\commands\loaddata.py", line 163, in loaddata
self.load_label(fixture_label)
File "C:\Users\JCAS1\.virtualenvs\test_command\lib\site-packages\django\core\management\commands\loaddata.py", line 251, in load_label
for obj in objects:
File "C:\Users\JCAS1\.virtualenvs\test_command\lib\site-packages\django\core\serializers\json.py", line 70, in Deserializer
yield from PythonDeserializer(objects, **options)
File "C:\Users\JCAS1\.virtualenvs\test_command\lib\site-packages\django\core\serializers\python.py", line 142, in Deserializer
raise base.DeserializationError.WithData(
django.core.serializers.base.DeserializationError: Problem installing fixture 'C:\Users\JCAS1\PycharmProjects\djangoProject\test_command\fixtures\cursos.json': ["“{'nome': 'Integração ao
AVASUS e PEPSUS', 'carga_horaria': 30, 'ordem': 1}” value must be an integer."]: (cursos.Curso:pk=1) field_value was '{'nome': 'Integração ao AVASUS e PEPSUS', 'carga_horaria': 30, 'ordem
': 1}'