summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorHasan Ramezani <hasan.r67@gmail.com>2020-09-29 15:51:42 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-09-30 20:10:38 +0200
commit6eb3f53bdd5089e3ab229780fe339fecfc30a7ee (patch)
tree3e8eb9ba5b5f25f2dddde27dcfd85c50bf28274f /django
parent11c4a4412b74bb1dfe52d706a58f230066821c33 (diff)
Fixed #32047 -- Fixed call_command() crash if a constant option from required mutually exclusive group is passed in options.
Diffstat (limited to 'django')
-rw-r--r--django/core/management/__init__.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/django/core/management/__init__.py b/django/core/management/__init__.py
index cf6b60c93e..aff9be4e85 100644
--- a/django/core/management/__init__.py
+++ b/django/core/management/__init__.py
@@ -2,7 +2,9 @@ import functools
import os
import pkgutil
import sys
-from argparse import _SubParsersAction
+from argparse import (
+ _AppendConstAction, _CountAction, _StoreConstAction, _SubParsersAction,
+)
from collections import defaultdict
from difflib import get_close_matches
from importlib import import_module
@@ -138,7 +140,9 @@ def call_command(command_name, *args, **options):
# Any required arguments which are passed in via **options must be passed
# to parse_args().
parse_args += [
- '{}={}'.format(min(opt.option_strings), arg_options[opt.dest])
+ min(opt.option_strings)
+ if isinstance(opt, (_AppendConstAction, _CountAction, _StoreConstAction))
+ else '{}={}'.format(min(opt.option_strings), arg_options[opt.dest])
for opt in parser_actions if (
opt.dest in options and
(opt.required or opt in mutually_exclusive_required_options)