2014-12-22 10 views
15

मुझे Django में बेस कमांड के लिए एक पूर्णांक तर्क में पास करने की आवश्यकता है। मिसाल के तौर पर मेरी कोड था अगरDjango प्रबंधन कमांड तर्क

from django.core.management import BaseCommand 

class Command(BaseCommand): 
    def handle(self, *args, **options, number_argument): 
     square = number_argument ** 2 
     print square 

मैं अजगर manage.py square_command 4 कहना चाहता हूँ और इसे वापस 16. होता वहाँ एक रास्ता मैं कमांड मैं चलाना चाहते हैं करने के लिए टर्मिनल के माध्यम से एक तर्क पारित कर सकते हैं है ?

उत्तर

28

अपने कमान वर्ग के लिए इस विधि जोड़ें:

def add_arguments(self, parser): 
    parser.add_argument('my_int_argument', type=int) 

फिर आप कोड में अपने विकल्प का उपयोग कर सकते हैं, इस तरह:

def handle(self, *args, **options): 
    my_int_argument = options['my_int_argument'] 

इस तरह से यह कर के लाभ यह है कि help है आउटपुट स्वचालित रूप से manage.py my_command --help

+4

यहां डॉक्स: https://docs.djangoproject.com/en/dev/howto/custom-management-commands/ – User

+1

स्वीकार्य उत्तर होना चाहिए। – itsafire

+0

Django 2.8 के रूप में, यह करने का यह तरीका है। – neuronet

2

हां। ऐसा करने के लिए तंत्र को here वर्णित किया गया है, लेकिन मूल रूप से, आप args[0] से तर्क प्राप्त कर सकते हैं।

+5

के लिए स्वचालित रूप से जेनरेट किया गया है यहां एक और पूरा उत्तर मिला: http://stackoverflow.com/questions/10568864/two-arguments-in-django-admin- कस्टम -command? rq = 1 –

+0

उन लोगों के लिए जो अधिक जानकारी चाहते हैं, एसिडजंक द्वारा उत्तर देखें। – neuronet

+0

@ पीटर ग्राहम अब आपको 'add_arguments' विधि का उपयोग करना चाहिए, जो संस्करण 1.8 में जोड़ा गया था, इसलिए मैं अब और अधिक पूर्ण उत्तर की अनुशंसा नहीं करता। – neuronet

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