﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
25483	call_command() should pass positional argument as str() instead of int()	KS Chan	nobody	"Since argparse is adopted, int() argument should be passed as str() and let argparse to handle it. This is better mentioned in the doc.

See below example:

{{{
# management/commands/callme.py
from django.core.management.base import BaseCommand, CommandError

class Command(BaseCommand):
    def add_arguments(self, parser):
        parser.add_argument('poll_id', nargs='+', type=int)

    def handle(self, *args, **options):
        for poll_id in options['poll_id']:
            self.stdout.write('%d' % poll_id)


# python manage.py shell
>>> from django.core.management import call_command
>>> call_command('callme', 1, 2, 3)
Traceback (most recent call last):
  File ""<console>"", line 1, in <module>
  File ""/home/mrkschan/tmp/tcallcommand/env/local/lib/python2.7/site-packages/django/core/management/__init__.py"", line 109, in call_command
    defaults = parser.parse_args(args=args)
  File ""/home/mrkschan/tmp/tcallcommand/env/local/lib/python2.7/site-packages/django/core/management/base.py"", line 64, in parse_args
    return super(CommandParser, self).parse_args(args, namespace)
  File ""/usr/lib/python2.7/argparse.py"", line 1690, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File ""/usr/lib/python2.7/argparse.py"", line 1722, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File ""/usr/lib/python2.7/argparse.py"", line 1763, in _parse_known_args
    option_tuple = self._parse_optional(arg_string)
  File ""/usr/lib/python2.7/argparse.py"", line 2050, in _parse_optional
    if not arg_string[0] in self.prefix_chars:
TypeError: 'int' object has no attribute '__getitem__'
>>> call_command('callme', '1', '2', '3')
1
2
3
}}}
"	Cleanup/optimization	closed	Core (Management commands)	dev	Normal	fixed			Ready for checkin	1	0	0	0	0	0
