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

时间:2012-01-26 21:44:02

标签: 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?', choices = SNAIL_MAIL_CHOICES, default='Y')
snailMailInvoice = models.CharField(max_length = 3, verbose_name = 'Snail Mail Invoice?', choices = SNAIL_MAIL_INVOICE_CHOICES, default='Y')

当我在Django模板中显示这两个值时,我这样做:

    <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>

问题是,当第一个字段snailMailOnly正确显示选项YesNo时,第二个字段snailMailInvoice仅显示Y和{{ 1}}。

我在这里做错了什么?

由于

编辑 - 添加联系人型号代码:

N

2 个答案:

答案 0 :(得分:0)

根据您发布的代码,没有理由这样做。 “Y”和“N”是SNAIL_MAIL_CHOICES的显示值吗?您的Web服务器可能没有提取最新的代码。

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

如果您正在制作中,请重新启动您的网络服务器它代理的进程(如果有),例如uwsgi。

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

$ find . -name="*.pyc" -exec rm {}\;

答案 1 :(得分:0)

好的 - 我明白了。

我意识到有一些事实与我的CSV文件中的snailMailInvoice字段是每行的最后一个字段有关。因此,在该行的末尾有一个回车。我假设这是一个\n - 因此在我的MySQL命令中导入CSV,我说明terminated by '\n'

但是,MySQL在每条线路上都选择了'\ r'并将其添加到snailMailInvoice字段。因此,每条记录都有一个YN附加\r

我修改了我的MySQL import语句:lines terminated with '\r\n'现在一切都按预期工作了。

经验教训。

感谢您的帮助。