Django——选择字段显示键,而不是值

Django——选择字段显示键,而不是值,django,django-models,django-templates,django-template-filters,Django,Django Models,Django Templates,Django Template Filters,我有一个有很多字段的模型。其中两个字段有选择。它们看起来像这样: SNAIL_MAIL_INVOICE_CHOICES = ( ('Y', 'Yes'), ('N', 'No'), ) SNAIL_MAIL_CHOICES = ( ('Y', 'Yes'), ('N', 'No'), ) snailMailOnly = models.CharField(max_length = 3, verbose_name = 'Snail Mail Only?', cho

我有一个有很多字段的模型。其中两个字段有选择。它们看起来像这样:

SNAIL_MAIL_INVOICE_CHOICES = (
    ('Y', 'Yes'),
    ('N', 'No'),
)

SNAIL_MAIL_CHOICES = (
    ('Y', 'Yes'),
    ('N', 'No'),
)

snailMailOnly = models.CharField(max_length = 3, verbose_name = 'Snail Mail Only?', choices = SNAIL_MAIL_CHOICES, default='Y')
snailMailInvoice = models.CharField(max_length = 3, verbose_name = 'Snail Mail Invoice?', choices = SNAIL_MAIL_INVOICE_CHOICES, default='Y')
    <tr><td>Snail Mail Only?</td><td>{{contact.get_snailMailOnly_display}}</td></tr>
    <tr><td>Snail Mail Invoice?</td><td>{{contact.get_snailMailInvoice_display}}</td></tr>
当我在Django模板中显示这两个值时,我是这样做的:

SNAIL_MAIL_INVOICE_CHOICES = (
    ('Y', 'Yes'),
    ('N', 'No'),
)

SNAIL_MAIL_CHOICES = (
    ('Y', 'Yes'),
    ('N', 'No'),
)

snailMailOnly = models.CharField(max_length = 3, verbose_name = 'Snail Mail Only?', choices = SNAIL_MAIL_CHOICES, default='Y')
snailMailInvoice = models.CharField(max_length = 3, verbose_name = 'Snail Mail Invoice?', choices = SNAIL_MAIL_INVOICE_CHOICES, default='Y')
    <tr><td>Snail Mail Only?</td><td>{{contact.get_snailMailOnly_display}}</td></tr>
    <tr><td>Snail Mail Invoice?</td><td>{{contact.get_snailMailInvoice_display}}</td></tr>

根据你发布的代码,没有理由这么做。“Y”和“N”是
SNAIL\u MAIL\u选项的显示值吗?您的web服务器可能没有提取最新的代码

如果您正在开发中,请尝试关闭runserver(CTRL+C)并重新启动它

如果您正在生产中,请重新启动Web服务器及其代理的进程(如果有),如uwsgi

您还可以尝试删除项目中的任何
*.pyc
文件。*nix shell中的快速简便方法是(从项目目录):

好吧,我知道了

我意识到,在我的CSV文件中,
snailMailInvoice
字段是每行的最后一个字段,这与此有关。因此,在该行的末尾有一个回车。我假设这是一个
\n
——因此在我导入CSV的MySQL命令中,我声明
以“\n”
终止

但是,MySQL在每一行上都提取了一个“\r”,并将其添加到
snailmailvoice
字段中。因此,每个记录都有一个
Y
或一个
N
,并附加一个
\r

我将MySQL导入语句修改为:
行以“\r\n”结尾。
现在一切正常

吸取的教训


谢谢您的帮助。

否,选择总是“是”和“否”。我重新启动了测试服务器(尚未投入生产),没有任何更改。我必须说我很困惑!请试试克里斯·普拉特的建议。重新启动服务器不会删除预编译的.pyc文件。我应该提到,我也删除了.pyc文件,没有任何更改--我仍然得到
Y
N
--不是是或否。将代码发布给您的联系人。get_snailMailInvoice\u显示。问题可能就在那里。@DTing——添加了整个
联系人
模型。不知道你还想找什么。
get\u FOO\u显示屏
是一个标准的Django标签。很抱歉,我的Django有点生锈了。一定要尝试Chris Pratt的建议,但您是否尝试过用模板中的SNAIL\u MAIL\u INVOICE\u选项替换SNAIL\u MAIL\u选项,看看重新启动后会发生什么?另一方面,DefftTyyynnOpple的选择,而不是所有那些“不同”的选择,可能是一件值得考虑的事情。谢谢你的澄清。事实上,我正在研究我第一次学习Django和cringe时创建的模型。将来会有一些改变来摆脱所有这些选择领域——yuk!