“choices”必须是包含(实际值、人类可读名称)元组的可迭代

Sto*_*old 12 python django

尝试在模型字段上设置选择时出现错误。这是代码:

TICKET = 'TICKET',
TICKET_HISTORY = 'TH'
TICKET_RATE = 'TR'
PASSWORD_CHANGE = 'PASS'
CONTENT = 'CN'

TYPE_CHOICES = [
    (TICKET, 'Ticket created'), (TICKET_HISTORY, 'Ticket changed'), (TICKET_RATE, 'Ticket rated'),
    (PASSWORD_CHANGE, 'Password changed'), (CONTENT, 'Added content')
]

type = models.CharField(max_length=6, choices=TYPE_CHOICES, default=TICKET)
Run Code Online (Sandbox Code Playgroud)

TYPE_CHOICES 似乎是正确的,无法理解问题出在哪里

例外:

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at    0x7f8acad18bf8>
Traceback (most recent call last):
  File "/home/userwoozer/work/tickets/env/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
fn(*args, **kwargs)
  File "/home/userwoozer/work/tickets/env/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 117, in inner_run
self.check(display_num_errors=True)
  File "/home/userwoozer/work/tickets/env/lib/python3.6/site-packages/django/core/management/base.py", line 425, in check
raise SystemCheckError(msg)
django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues:

ERRORS:
main.Activity.type: (fields.E005) 'choices' must be an iterable containing (actual value, human readable name) tuples.
Run Code Online (Sandbox Code Playgroud)

小智 12

只需删除,代码中的第 1 行:TICKET = 'TICKET',


Adn*_*ikh 6

*只是把这个放在这里,认为它可能对某人有帮助

就我而言,我在运行makemigrations命令时遇到了这个问题,并且我的选择定义如下,

ACTION_TYPE = (
    (RATE_ADVISOR, 'Rate Advisor')
)
Run Code Online (Sandbox Code Playgroud)

我只是在选项末尾加了一个逗号,我的问题就解决了

ACTION_TYPE = (
    (RATE_ADVISOR, 'Rate Advisor'), #note this comma here
)
Run Code Online (Sandbox Code Playgroud)


小智 -1

TYPE_CHOICES = (
    ('TICKET', 'Ticket created'), 
    ('TICKET_HISTORY', 'Ticket changed'), 
    ('TICKET_RATE', 'Ticket rated'),
    ('PASSWORD_CHANGE', 'Password changed'), 
    ('CONTENT', 'Added content')
)
Run Code Online (Sandbox Code Playgroud)

  • 请使用“```”降价符号正确格式化您的代码,并考虑添加一些文字注释您的答案如何/为什么回答问题 (2认同)