Как загрузить данные существующей базы данных в Djano (фиксы, postgresql)

Я пытаюсь загрузить некоторые сгенерированные данные в Django, не нарушая существующие данные на сайте. Что у меня есть:

  1. Saved the data as a valid JSON (validated here).
  2. The JSON format matches the Django documentation. In previous attempts I also aligned it to the Django documentation here (slightly different field order, the result was the same).

Ошибки вывода, которые я получаю, очень общие и не помогают, даже при использовании verbosity=3.

файлauto_2022_migration.py:

from django.db import migrations
from django.core.management import call_command
def db_migration(apps, schema_editor):
    call_command('loaddata', '/filename.json', verbosity=3)


class Migration(migrations.Migration):   
    dependencies = [('workoutprogrammes', '0004_extable_delete_ex_table'),]

    operations = [migrations.RunPython(db_migration),]

JSON извлечение файла (начало... конец)

NB: все мои PK являются UUID, сгенерированными из postgresql

[{"pk":"af82d5f4-2814-4d52-b2b1-6add6cf18d3c","model":"workoutprogrammes.ex_table","fields":{"exercise_name":"Cable Alternating Front Raise","utility":"Auxiliary","mechanics":"Isolated","force":"Push","levator_scapulae":"Stabilisers",..."obliques":"Stabilisers","psoas_major":""}}]

Подсказка об ошибке

Operations to perform:
  Apply all migrations: workoutprogrammes
Running migrations:
  Applying workoutprogrammes.0005_auto_20220415_2021...Loading '/Users/Robert/Desktop/Projects/Powerlifts/src/workoutprogrammes/fixtures/datafile_2' fixtures...
Checking '/Users/Robert/Desktop/Projects/Powerlifts/src/workoutprogrammes/fixtures' for fixtures...
Installing json fixture 'datafile_2' from '/Users/Robert/Desktop/Projects/Powerlifts/src/workoutprogrammes/fixtures'.
Traceback (most recent call last):
  File "/Users/Robert/Desktop/Projects/Powerlifts/venv/lib/python3.8/site-packages/django/core/serializers/json.py", line 70, in Deserializer
    yield from PythonDeserializer(objects, **options)
  File "/Users/Robert/Desktop/Projects/Powerlifts/venv/lib/python3.8/site-packages/django/core/serializers/python.py", line 93, in Deserializer
    Model = _get_model(d["model"])
KeyError: 'model'

The above exception was the direct cause of the following exception:... text continues on...
    for obj in objects:
  File "/Users/Robert/Desktop/Projects/Powerlifts/venv/lib/python3.8/site-packages/django/core/serializers/json.py", line 74, in Deserializer
    raise DeserializationError() from exc
django.core.serializers.base.DeserializationError: Problem installing fixture '/Users/Robert/Desktop/Projects/Powerlifts/src/workoutprogrammes/fixtures/datafile_2.json': 

Я не уверен, в чем заключалась первоначальная ошибка. Я подозреваю, что она была связана либо с редактированием таблицы/схемы с помощью psql отдельно от Django, либо с использованием несколько устаревшего пакета uuid-ossp вместо пакета pgcrypto (встроенного в Djagno через CryptoExtension()). Я так и не смог подтвердить это. Однако мне удалось заставить его работать с помощью:

  1. Удаление таблицы (схемы, данных) с помощью psql и приложения с помощью Django. Создаем новое приложение в Django.
  2. Загрузите данные предыдущей модели в это new_app/models.py. Создайте новый файл миграции, сначала обновив операцию CryptoExtension() перед фиксацией миграции.
  3. Создайте каталог Fixtures и соответствующий файл ( согласно спецификациям Django, валидированный JSON online.
  4. Валидируйте мои UUID online
  5. .
  6. Загрузите данные приспособления в приложение. python3 manage.py loaddata /path/to/data/file_name.json
Вернуться на верх