2011-05-07 3 views
1

Lorsque j'ai une vue qui aide au téléchargement d'un fichier, je veux qu'il soit stocké dans la base de données, ce qui n'est possible que si je lance syncdb. Mais, jusqu'à présent, je sais comment exécuter python manage.py syncdb sur la ligne de commande python. Comment puis-je le faire fonctionner automatiquement lorsque je télécharge des données?Comment faire fonctionner syncdb automatiquement dans Django?

+0

s'il vous plaît expliquer comment cela fonctionne, parce que vous pouvez télécharger un fichier int db sans syncdb, donc à mon humble avis, vous devriez certainement pas appeler syncdb tout le temps que vous téléchargez un fichier – Jerzyk

+0

Le téléchargement d'un fichier n'a absolument rien à voir avec syncdb. –

+0

"Je veux qu'il soit stocké dans la base de données, ce qui n'est possible que si je lance syncdb" - je ne suis pas sûr mais quelque chose à propos de cette phrase déclenche une petite cloche d'alarme dans ma tête. Décrivez un peu plus en détail ce que vous voulez réaliser. Le bit 'syncdb' pourrait être un faux-fuyant. –

Répondre

3

façon un peu hacky:

import sys 
sys.argv.append('syncdb') 

from django.core.management import execute_manager 
import settings # Your project's settings. Assumed to be in the same directory. 

execute_manager(settings)  
1

Vous pouvez toujours appeler

os.system('python /path/manage.py syncdb') 

Cela devrait fonctionner votre processus de syncdb, cependant, je pense qu'il ya de meilleures façons de résoudre cela sans l'aide syncdb à tout.

Oh, et vous aurez besoin d'utiliser le drapeau qui va répondre à toutes les questions.

1

Appeler syncdb à chaque téléchargement de fichier est faux en soi, mais répondant à votre question. Pour appeler syncdb de code à l'intérieur:

from django.core.management.commands.syncdb import Command as SyncDbCommand 
SyncDbCommand().handle_noargs() 
+0

Cela désynchronise les commandes; Vous ne pouvez pas exécuter cette commande maintenant pour moi, est-ce que je fais quelque chose de mal? – Mark

Questions connexes