60

有没有办法(不使用表单)访问模型字段选择值?

我想做类似的事情field.choices并在视图或模板中获取值列表。

4

3 回答 3

86

当然。只需访问choicesModel 字段的属性:

MyModel._meta.get_field('foo').choices
my_instance._meta.get_field('foo').choices
于 2012-08-28T20:05:22.783 回答
13

如果您要这样声明您的选择:

class Topic(models.Model):

    PRIMARY = 1
    PRIMARY_SECONDARY = 2
    TOPIC_LEVEL = ((PRIMARY, 'Primary'),
                  (PRIMARY_SECONDARY, 'Primary & Secondary'),)

    topic_level = models.IntegerField('Topic Level', choices=TOPIC_LEVEL,
            default=1)

这真的是一个很好的方法。见:http ://www.b-list.org/weblog/2007/nov/02/handle-choices-right-way/

然后你可以简单地取回选择Topic.TOPIC_LEVEL

于 2012-08-29T04:33:25.367 回答
5

我认为您正在寻找get_fieldname_display()功能。

于 2012-08-28T19:18:55.617 回答