モデルフィールドに「選択肢」のローカライズされたリストを使用する場合、管理者は翻訳された値をリストビューに表示しません。
簡単な例:
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)
「新規」および「キャンセル済み」のローカライズされたバージョンは、注文を編集するときにフロントエンドおよび管理フォームに正しく表示されます。しかし、管理者リストビューでは、英語を含め、切り替えた言語に関係なく、空白のフィールドが表示されます。列名は問題ありません。
これはPython2.3でのみ発生します(ニッチな質問について話します)。Python 2.5では、選択肢はどこにでも正しく表示されます。どちらにもエラーや警告は表示されません。
オプションにugettext_lazyの代わりにugettextを使用しようとしましたが、機能しませんでした。ugettext_noopの一種の作品-少なくとも空白のフィールドの代わりに元の英語バージョンを表示します。
私は何か間違ったことをしていますか、それともこれはバグですか?