9 votes

Que dois-je importer pour avoir accès à mes modèles ?

J'aimerais exécuter un script pour alimenter ma base de données. J'aimerais y accéder via l'API de base de données de Django.

Le seul problème est que je ne sais pas ce que je devrais importer pour y avoir accès.

Comment y parvenir ?

13voto

kender Points 18446

Importez également votre module de paramètres

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

from mysite.polls.models import Poll, Choice

devrait faire l'affaire.

6voto

Sam Corder Points 3196

C'est ce que j'ai en haut d'un de mes scripts de chargement de données scripts.

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

Tout ceci doit être exécuté avant que vous ne fassiez quoi que ce soit d'autre dans votre script.

Une autre méthode consiste à utiliser les fixtures et manage.py. Si vous essayez simplement d'effectuer un chargement de données en masse pour initialiser une base de données, cela devrait fonctionner correctement.

De plus, selon ce que vous faites, vous pouvez ou non vouloir tout faire en une seule transaction. Décommentez la ligne de transaction ci-dessus et structurez votre code de la manière suivante.

transaction.enter_transaction_management()
try:
    #Do some stuff
    transaction.commit()
finally:
    transaction.rollback()
    pass
transaction.leave_transaction_management()

5voto

hop Points 15423

Si vous utilisez le shell à l'argument manage.py script dans le répertoire de votre projet, vous n'avez pas besoin d'importer les paramètres manuellement :

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

Pour une utilisation non interactive, vous pourriez mettre en œuvre un commande personnalisée et l'exécuter avec manage.py .

1voto

Thomas Points 11

La solution la plus propre est d'ajouter des extensions 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 

La liste des commandes possibles est ensuite complétée, entre autres, par la commande runscript.

0voto

Lou Franco Points 48823

En plus de vos propres fichiers de modèles, vous devez également importer votre module de paramètres.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X