2011-09-02 7 views
24
>>> from django.core.management import call_command 
>>> call_command('syncdb') 

एक पायथन स्क्रिप्ट के भीतर से syncdb प्रबंधन कमांड निष्पादित करता है। हालांकि, मैंमैं Django के 'syncdb --noinput` को call_command के साथ कैसे कर सकता हूं?

$ python manage.py syncdb --noinput 

एक पाइथन खोल या स्क्रिप्ट के भीतर से बराबर चलाना चाहता हूं। मैं उसे कैसे कर सकता हूँ?

निम्नलिखित पंक्तियां मुझे प्रश्न के साथ बाधित किए बिना काम नहीं करती हैं कि मैं एक सुपर उपयोगकर्ता बनाना चाहता हूं।

>>> call_command('syncdb', noinput = True) # asks for input 
>>> call_command('syncdb', 'noinput') # raises an exception 

मैं Django 1.3 का उपयोग करता हूं।

+2

हल किया गया: 'call_command (' syncdb ', इंटरैक्टिव = झूठा) ' – pvoosten

+0

[इस प्रश्न] का डुप्लिकेट (http://stackoverflow.com/questions/2772990/programmatically-sync-the-db-in-django)? –

+2

@ एलबीपी आपको किसी टिप्पणी में समाधान सम्मिलित नहीं करना चाहिए, लेकिन एक उत्तर में और फिर इसे स्वीकार करें। अन्यथा यह प्रश्न हमेशा के लिए एक स्वीकृत उत्तर के बिना होगा। –

उत्तर

42
call_command('syncdb', interactive = False) 

संपादित करें:

मैं स्रोत कोड में इस सवाल का जवाब मिल गया। सभी प्रबंधन आदेशों के लिए स्रोत कोड management/commands/(command_name).py

अजगर मॉड्यूल जहां syncdb आदेश रहता नामक एक अजगर मॉड्यूल में पाया जा सकता django.core.management.commands.syncdb

आदेश आप कुछ इस तरह कर सकते हैं के स्रोत कोड को खोजने के लिए है:

(env)$ ./manage.py shell 
>>> from django.core.management.commands import syncdb 
>>> syncdb.__file__ 
'/home/user/env/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.pyc' 
>>> 

बेशक, syncdb.py की सामग्री जांचें, और syncdb.pyc नहीं।

या online source को देख, syncdb.py स्क्रिप्ट शामिल हैं:

make_option('--noinput', action='store_false', dest='interactive', default=True, 
     help='Tells Django to NOT prompt the user for input of any kind.'), 

हमें बताता है कि कि --noinput कमांड लाइन पर करने के बजाय, हम interactive का उपयोग करना चाहिए अगर हम call_command समारोह के साथ आदेशों स्वचालित करना चाहते हैं।

+0

क्या किसी को पता है कि आप 'नॉनपूट' के बजाय 'इंटरैक्टिव' का उपयोग क्यों करते हैं? क्या यह Django दस्तावेज़ों में कहीं भी है? –

+0

जहां तक ​​मैं कह सकता हूं, इस विषय पर प्रलेखन काफी अस्पष्ट है। यहां एक उदाहरण दिया गया है: https://docs.djangoproject.com/en/dev/ref/django-admin/#running-management-commands-from-your-code – pvoosten

+0

आपके उत्तर – ihatecache

संबंधित मुद्दे