django-transmeta进入管理员,在field.label_tag中显示“无”

时间:2011-04-04 09:35:56

标签: django

我正在尝试将django-transmeta集成到ubuntu 10.10上的django安装中(系统上的python-django版本是1.2.3-1ubuntu0.2.10.10.1) 按照项目主页/摘要here中的说明,我最终得到了数据库中正确的新字段,但是当我打开管理界面并尝试添加对象时,翻译的字段“描述”未显示在管理面板中,它仅显示。 查看源代码并经过一些调试后,将变量传递给模板 值似乎 field.label_tag

这是models.py中的类:

class Place(models.Model):
__metaclass__ = TransMeta
lat = models.FloatField(blank=True, null=True)
lon = models.FloatField(blank=True, null=True)
alt = models.FloatField(blank=True, null=True)
description = models.CharField(max_length=100)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
attributes = models.ManyToManyField(Attribute, through='PlaceAttribute')
is_online = models.BooleanField(default=False)
class Meta:
    translate = ('description', )
def __unicode__(self):
    return self.description

在settings.py中我添加了这个:

LANGUAGE_CODE = 'en-us'

ugettext = lambda s: s # dummy ugettext function, as django's docs say

LANGUAGES = (
    ('en-us', ugettext('English')),
    ('it', ugettext('Italian')),
    ('de', ugettext('Deutsch')),
    ('fr', ugettext('French')),
    ('ru', ugettext('Russian')),
    ('cn', ugettext('Chinese')),
    ('th', ugettext('Thai')),
)

TRANSMETA_DEFAULT_LANGUAGE = 'en-us'

这是管理界面中结果的屏幕截图: (对不起,我是新手,因为反垃圾邮件原因无法在问题中发布图片) admin screenshot here

在上面的管理表单中,它应该是:

Description en-us:
Description it:
Description de: 
....

您知道问题可能是什么吗?或许这是一个错误?

为了改进我的调试,您能否将我指向django管理视图中正确的位置,其中生成了 field.label_tag ? (我对Django很新)

如果需要一些调试数据,请告诉我,我很乐意提供。

提前致谢

的Fabio

1 个答案:

答案 0 :(得分:5)

您的字段上似乎缺少verbose_name属性。

from django.utils.translation import gettext_lazy as _

class Place(models.Model):
    __metaclass__ = TransMeta
    # ...
    description = models.CharField(max_length=100, verbose_name=_("Description"))
    # ...

    class Meta:
        translate = ('description', )

    def __unicode__(self):
        return self.description