Скрипт Django для доступа к объектам модели без использования команды manage.py - PullRequest
60 голосов
/ 08 ноября 2011

Я пишу скрипт для импорта некоторых объектов модели в базу данных, которую использует мое приложение django.В прошлом я решил эту проблему, запустив ./manage.py shell, а затем import myscript.Я уверен, что есть лучший способ.Я хотел бы иметь возможность вызывать скрипт из любого места на моем HD, используя python scriptname.py, и в первых нескольких строках этого скрипта он будет выполнять любые необходимые операции импорта / другие операции, чтобы он мог обращаться к объектам модели и вести себя так, как если быон был запущен с использованием manage.py shell.

Что мне нужно добавить к моему сценарию для достижения этой цели?

РЕДАКТИРОВАТЬ:

На основе @Ответ Мелуга с добавлением динамического задания пути Python для решения части вопроса «где угодно на моем HD»:

import sys
sys.path.append('c:\\my_projec_src_folder')
from myproject import settings
from django.core.management import setup_environ
setup_environ(settings)

Ответы [ 11 ]

0 голосов
/ 05 июля 2017

Если вы получаете:

django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

Попробуйте:

import os
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')
application = get_wsgi_application()
...