如何在 Django admin 中本地化 list_display 字段?

Posted

技术标签:

【中文标题】如何在 Django admin 中本地化 list_display 字段?【英文标题】:How to localize list_display fields in Django admin? 【发布时间】:2012-01-08 17:57:18 【问题描述】:

我在 ModelAdmin 类的 list_display 中有浮点字段,我希望它们在本地显示(如 1.000,00)。我已经将 USE_L10N 和 USE_I18N 设置为 True,但这还不够。

我目前的解决方案如下:

from django.utils import formats

class MyAdmin(admin.ModelAdmin):
   list_display = ('localized_myfield')

   def localized_myfield(self, instance):
       return formats.localize(instance.myfield)

这行得通,但是为我拥有的每个浮点字段定义一个方法看起来像很多不必要的代码。有没有更简单的方法来做到这一点?

【问题讨论】:

【参考方案1】:

经过一番研究,我找到了答案。要实现我想要的,需要三件事:

USE_L10N=在 settings.py 中为真 settings.py 中的USE_THOUSAND_SEPARATOR myfield = forms.DecimalField(localize=True) in forms.py(我终于意识到在我的情况下,DecimalField 比 Floatfield 更好)

【讨论】:

localize=True 适用于编辑表单,但如何在 list_display 上添加本地化?

以上是关于如何在 Django admin 中本地化 list_display 字段?的主要内容,如果未能解决你的问题,请参考以下文章

django admin 1.7 + django-grappelli 2.6.1 中的 jQuery datepicker 本地化

django override admin 在本地工作而不是在生产中

Django Admin后台管理

Django-admin站点管理的详细使用

Django Admin Cookbook-8如何在Django admin中优化查询

Django Admin Cookbook-23如何在Django admin中添加嵌套的内联