代码之家  ›  专栏  ›  技术社区  ›  Tomas Andrle

django-admin在python 2.3下的列表视图中不显示已翻译的枚举。

  •  1
  • Tomas Andrle  · 技术社区  · 15 年前

    当对模型字段使用本地化的“选项”列表时,管理员不会在列表视图中显示翻译后的值。

    简短的例子:

    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而不是ugettext懒惰地选择那些不起作用的选项。ugettext ou noop类作品-它至少显示了原始的英文版本,而不是空白字段。

    是我做错了什么,还是这是个虫子?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Alex Gaynor    15 年前

    这可能是Django中的某个错误,未正确调用项目上的强制Unicode。粘贴的原始代码是正确的。您没有提到您使用的是什么django版本,所以我建议您尝试一下最新的1.0.3或1.1版本,看看是否会发生这种情况,否则请检查跟踪罚单,看看是否已经报告过(请注意,如果还没有修复,可能根本不会,因为1.1是支持2.3的最后一个版本)。

        2
  •  0
  •   Haes    15 年前

    尝试使用:

    import gettext as _
    

    但是,如果某些翻译使用非ASCII值,则可能会中断。实际上,这个应该在一段时间前就修好了,见票 #5287 .

    希望这有帮助。