Я хотел бы вызвать эквивалент manage.py loaddata
из представления Django. Я хотел бы иметь возможность указать, откуда загружать данные и в какое приложение их загружать.
Любые идеи?
Я хотел бы вызвать эквивалент manage.py loaddata
из представления Django. Я хотел бы иметь возможность указать, откуда загружать данные и в какое приложение их загружать.
Любые идеи?
Каждая команда django-admin.py
(manage.py
), как видно из ссылки документацию, вы можете вызвать из своего кода с помощью:
from django.core.management import call_command
call_command('loaddata', 'myapp')
Где первый параметр — это имя команды, все остальные параметры положения совпадают с параметрами положения командной строки, а все параметры ключевого слова являются параметрами.
loaddata
нельзя использовать непосредственно при переносе данных, поскольку она внутренне загружает самые последние определения модели и использует их для десериализации исторических данных в фикстуре. Это неправильное поведение. Решение здесь: stackoverflow.com/a/39743581/2293304
- person Rockallite; 08.10.2016
app_label
, чтобы указать, куда загружать прибор, например. call_command('loaddata', 'initial_data.json', app_label='myapp')
. В противном случае будут загружены приборы с тем же именем из всех установленных приложений.
- person Rockallite; 08.10.2016