Программное использование данных загрузки Django

Я хотел бы вызвать эквивалент manage.py loaddata из представления Django. Я хотел бы иметь возможность указать, откуда загружать данные и в какое приложение их загружать.

Любые идеи?


person Deniz Dogan    schedule 20.05.2009    source источник


Ответы (1)


Каждая команда django-admin.py (manage.py), как видно из ссылки документацию, вы можете вызвать из своего кода с помощью:

from django.core.management import call_command

call_command('loaddata', 'myapp')

Где первый параметр — это имя команды, все остальные параметры положения совпадают с параметрами положения командной строки, а все параметры ключевого слова являются параметрами.

person Alex Koshelev    schedule 20.05.2009
comment
вы также можете добавить параметр verbosity=0 для вывода консоли подавления: call_command('loaddata', 'fixture_name.json', verbosity=0) - person Sergey Telminov; 16.03.2015
comment
Документы здесь: docs. djangoproject.com/en/1.8/ref/django-admin/ - person Renato; 02.06.2015
comment
Обратите внимание, что команду loaddata нельзя использовать непосредственно при переносе данных, поскольку она внутренне загружает самые последние определения модели и использует их для десериализации исторических данных в фикстуре. Это неправильное поведение. Решение здесь: stackoverflow.com/a/39743581/2293304 - person Rockallite; 08.10.2016
comment
Также обратите внимание, что вы должны использовать аргумент ключевого слова app_label, чтобы указать, куда загружать прибор, например. call_command('loaddata', 'initial_data.json', app_label='myapp'). В противном случае будут загружены приборы с тем же именем из всех установленных приложений. - person Rockallite; 08.10.2016