2009-07-20 3 views
1

При использовании локализованного списка «вариантов» для поля модели администратор не отображает переведенные значения в виде списка.Django admin не отображает переведенные перечисления в виде списка в Python 2.3

Краткий пример:

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) 

Локализованных версии «New» и «Отменен» показывает правильно в переднем конце и в виде администратора при редактировании заказа. Но в представлении списка admin Я получаю пустые поля - независимо от языка, на который я переключаюсь, включая английский. Имена колонок прекрасны.

Это происходит только с Python 2.3 (расскажите о проблемах с нишей). Варианты отображения отображаются везде с Python 2.5. Я не получаю никаких ошибок или предупреждений ни в одном.

Пробовал использовать ugettext вместо ugettext_lazy для параметров, которые не сработали. ugettext_noop вид работ - он по крайней мере показывает оригинальные английские версии вместо пустых полей.

Я делаю что-то неправильно или это ошибка?

ответ

1

Это, вероятно, ошибка где-то в Django, не называя force_unicode на элементе правильно. Исходный код, который вы вставили, верен. Вы не упоминаете, какую версию Django используете, поэтому я рекомендую попробовать последнюю версию 1.0.3 или 1.1, чтобы убедиться, что это произойдет, чтобы исправить ее, а также проверить отслеживание билетов, чтобы узнать, уже ли это было сообщено (примечание что если он еще не исправлен, то, вероятно, его совсем не будет, так как 1.1 является последней версией для поддержки 2.3).

+0

Сначала попробовал его с 1.0.2, теперь попробуем 1.1 (на реальном сервере, поэтому потребуется некоторое время, чтобы установить что-то правильно). –

+0

Работает отлично с 1.1 –

+0

В качестве побочного элемента - я думаю, мне просто нужно было немного нажать, чтобы выполнить обновление 1.1 на реальном сервере. Только несколько сайтов Django, но все же ... к счастью, ничего не сломалось в этом процессе. –

0

попробовать с помощью:

import gettext as _ 

Хотя, что может сломаться, если некоторые из ваших переводов используют значения не-ASCII. На самом деле, это должно было быть исправлено некоторое время назад, см. Ticket #5287.

Надеюсь, это поможет.

+0

Нет, не помогло, но спасибо за попытку! Раньше я не мог найти этот билет. Увы, это относится к администратору oldforms, который, кажется, был полностью переписан некоторое время назад ... –