Is there a way (without using a form) to access a model fields \'choices\' value?
I want to do something like field.choices - and get the list of values either in a
Sure, just access the choice
attribute of a Model field.
MyModel._meta.get_field('foo').choices
my_instance._meta.get_field('foo').choices
If you're declaring your choices like this:
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)
Which is a good way of doing it really. See: http://www.b-list.org/weblog/2007/nov/02/handle-choices-right-way/
Then you can get back the choices simply with Topic.TOPIC_LEVEL
I think you are looking for get_fieldname_display()
function.