Python Django选择元组

Python Django选择元组,python,django,Python,Django,我不确定以前是否有人回答过这个问题,但现在开始 我有这个密码 ITEM = [ ('Fruits', ( ('a', 'Apple'), ('g', 'Grape'), ('m', 'Mango') ) ), ('Vegetables', ( ('b', 'Broccoli'), ('p', 'Peanut'),

我不确定以前是否有人回答过这个问题,但现在开始

我有这个密码

ITEM = [
    ('Fruits', (
            ('a', 'Apple'),
            ('g', 'Grape'),
            ('m', 'Mango')
        )
    ),

    ('Vegetables', (
            ('b', 'Broccoli'),
            ('p', 'Peanut'),
            ('t', 'Tomato')
        )
    ),
]
有了它,我试图像这样访问模型中的元组的可读版本

item = models.CharField(max_length=50, choices=ITEM)
然而,当我从django管理页面提交这个字段时,它提交了,比如说“a”,而不是“Apple”


如何确保我已将“Apple”提交到数据库中,以便稍后以HTML格式显示?

您可以使用。如文件中所述:

对于设置了选项的每个字段,对象将有一个
get\u FOO\u display()
方法,其中
FOO
是字段的名称。此方法返回字段的“人类可读”值

因此,如果稍后在模板中希望为
字段呈现人类可读的值,则可以使用以下方式呈现:

{{ my_object.get_item_display }}

{{my_object.get_item_display}}
您可以使用渲染值。如文件中所述:

对于设置了选项的每个字段,对象将有一个
get\u FOO\u display()
方法,其中
FOO
是字段的名称。此方法返回字段的“人类可读”值

因此,如果稍后在模板中希望为
字段呈现人类可读的值,则可以使用以下方式呈现:

{{ my_object.get_item_display }}

{{my_object.get_item_display}}
为什么不将项创建为具有
名称
类别
字段的模型?@KentShikama,因为您不必为选项值使用相关模型-因为它不需要管理员可编辑,或者实际上不需要管理员可编辑(考虑一下代码是否依赖此值执行不同的操作……您当然不希望在这里混合硬编码和可编辑的操作)。为什么不将项目创建为具有
名称
类别
字段的模型?@KentShikama,因为您不一定要将相关模型用于选项值-因为它不需要管理员可编辑,或者实际上不需要管理员可编辑(考虑一下代码是否依赖此值来执行不同的操作…您肯定不想在此处混合硬编码和可编辑的内容)。事实证明,我不需要括号来使其在视图上工作。Thanksturns我不需要括号来使其在视图上工作。谢谢