Ответ 1
Конечно, просто войдите в атрибут choice
поля Model.
MyModel._meta.get_field('foo').choices
my_instance._meta.get_field('foo').choices
Есть ли способ (без использования формы) для доступа к значению выбора полей модели?
Я хочу сделать что-то вроде field.choices - и получить список значений либо в представлении, либо в шаблоне
Конечно, просто войдите в атрибут choice
поля Model.
MyModel._meta.get_field('foo').choices
my_instance._meta.get_field('foo').choices
Если вы объявляете свой выбор следующим образом:
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
Я думаю, что вы ищете функцию get_fieldname_display()
.