При использовании локализованного списка «вариантов» для поля модели администратор не показывает переведенные значения в виде списка.
Краткий пример:
from django.utils.translation import ugettext_lazy as _
class OrderStates:
STATES = (
(STATE_NEW, _("New")),
(STATE_CANCELLED, _("Cancelled")), )
class Order(models.Model):
state = models.IntegerField(choices=OrderStates.STATES)
# ..
class OrderAdmin(admin.ModelAdmin):
list_display = [ 'id', 'state', 'address', 'user']
# ..
admin.site.register(Order, OrderAdmin)
Локализованные версии «Новый» и «Отмененный» правильно отображаются в интерфейсе и в форме администратора при редактировании заказа. Но в представлении списка администраторов я получаю пустые поля - независимо от того, на какой язык я переключаюсь, включая английский. Имена столбцов в порядке.
Это происходит только с Python 2.3 (поговорим о нишевых вопросах). Выбор отображается правильно везде с Python 2.5. Я не получаю ни ошибок, ни предупреждений ни в одном.
Попытка использовать ugettext вместо ugettext_lazy для параметров, которые не работали. ugettext_noop вроде работает - он по крайней мере показывает оригинальные английские версии вместо пустых полей.
Я что-то не так делаю или это ошибка?