Что мне нужно импортировать, чтобы получить доступ к моим моделям? - PullRequest
8 голосов
/ 08 октября 2008

Я хотел бы запустить скрипт для заполнения моей базы данных. Я хотел бы получить к нему доступ через API базы данных Django.

Единственная проблема в том, что я не знаю, что мне нужно будет импортировать, чтобы получить доступ к этому.

Как этого достичь?

Ответы [ 5 ]

12 голосов
/ 08 октября 2008

Импортируйте ваш модуль настроек тоже

import os
os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"

from mysite.polls.models import Poll, Choice

должен сделать трюк.

6 голосов
/ 09 октября 2008

Это то, что у меня на вершине одного из моих скриптов загрузки данных.

import string
import sys
try:
    import settings # Assumed to be in the same directory.
    #settings.DISABLE_TRANSACTION_MANAGEMENT = True
except ImportError:
    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
sys.exit(1)

#Setup the django environment with the settings module.
import django
import django.core.management
django.core.management.setup_environ(settings)

from django.db import transaction

Все это должно быть выполнено, прежде чем вы сделаете что-то еще в вашем скрипте.

Еще один метод - использовать fixtures и manage.py. Хотя, если вы просто пытаетесь выполнить массовую загрузку данных для инициализации базы данных, это должно работать нормально.

Также в зависимости от того, что вы делаете, вы можете или не хотите делать все это в одной транзакции. Раскомментируйте строку транзакции выше и структурируйте свой код следующим образом.

transaction.enter_transaction_management()
try:
    #Do some stuff
    transaction.commit()
finally:
    transaction.rollback()
    pass
transaction.leave_transaction_management()
5 голосов
/ 08 октября 2008

Если вы используете аргумент shell для сценария manage.py в каталоге вашего проекта, вам не нужно импортировать настройки вручную:

$ cd mysite/
$ ./manage.py shell
Python 2.5.2 (r252:60911, Jun 10 2008, 10:35:34) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from myapp.models import *
>>>

Для неинтерактивного использования вы можете реализовать пользовательскую команду и запустить ее с manage.py.

1 голос
/ 24 октября 2011

Самое чистое решение - добавить расширения django.

(virt1)tsmets@calvin:~/Documents/prive/rugby-club/proposal/kitu$ yolk -l
Django          - 1.3.1        - active 
Pygments        - 1.4          - active 
Python          - 2.6.5        - active development (/usr/lib/python2.6/lib-dynload)
django-extensions - 0.7.1        - active 
pip             - 1.0.2        - active 
setuptools      - 0.6c11       - active 
wsgiref         - 0.1.2        - active development (/usr/lib/python2.6)
yolk            - 0.4.1        - active 

Список возможных команд затем расширяется, среди прочего, командой runcript.

0 голосов
/ 08 октября 2008

В дополнение к файлам ваших собственных моделей вам также необходимо импортировать модуль настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...