O que eu preciso para importar para ter acesso aos meus modelos?

votos
8

Eu gostaria de executar um script para preencher o meu banco de dados. Eu gostaria de acessá-lo através do banco de dados API Django.

O único problema é que eu não sei o que eu precisaria importar para ter acesso a esta.

Como isso pode ser alcançado?

Publicado 08/10/2008 em 12:23
fonte usuário
Em outras línguas...                            


5 respostas

votos
12

Importar seu módulo de configuração também

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

from mysite.polls.models import Poll, Choice

deve fazer o truque.

Respondeu 08/10/2008 em 12:55
fonte usuário

votos
6

Isto é o que eu tenho no topo de um meus scripts de carregamento de dados.

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

Isso tudo deve executar antes de fazer muito mais em seu script.

Outro método é a utilização de equipamentos e manage.py. Embora se você está apenas tentando realizar uma carga de dados em massa para inicializar um banco de dados que deve funcionar bem.

Além disso, dependendo do que você está fazendo você pode ou não pode querer fazer tudo em uma transação. Descomente a linha de transação acima e estruturar o seu código semelhante a este.

transaction.enter_transaction_management()
try:
    #Do some stuff
    transaction.commit()
finally:
    transaction.rollback()
    pass
transaction.leave_transaction_management()
Respondeu 08/10/2008 em 22:00
fonte usuário

votos
5

Se você usar o shellargumento para o manage.pyscript em seu diretório de projeto, você não tem que importar as configurações manualmente:

$ 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 *
>>>

Para uso não-interativo, você poderia implementar um comando personalizado e executá-lo com manage.py.

Respondeu 08/10/2008 em 14:38
fonte usuário

votos
1

A solução mais limpa é adicionar extensões de Django.

(Virt1) tsmets @ Calvin: ~ / Documents / prive / rugby-club / proposta / kitu $ gema -l
Django - 1.3.1 - ativo 
Pygments - 1,4 - activos 
Python - 2.6.5 - desenvolvimento ativo (/usr/lib/python2.6/lib-dynload)
django-extensões - 0.7.1 - ativo 
pip - 1.0.2 - ativo 
setuptools - 0.6c11 - ativos 
wsgiref - 0.1.2 - desenvolvimento ativo (/usr/lib/python2.6)
gema - 0.4.1 - activa 

A lista de comandos possíveis é então estendido com entre outras coisas o comando runscript.

Respondeu 24/10/2011 em 01:21
fonte usuário

votos
0

Além de seus próprios arquivos de modelos, você precisa importar o módulo de configurações também.

Respondeu 08/10/2008 em 12:37
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more