Nic*_*ton 2 django translation
有人可以告诉我以下方法在翻译方面是否有问题吗?
我担心冗长的名称在数据库迁移时变得固定。
模型.py
from django.utils.translation import gettext as _
class UserClient(models.Model):
user = models.OneToOneField(User,related_name='profile_client')
phone_cell = PhoneNumberField(verbose_name=_(u'Phone (Cell)'),null=True,blank=False)
phone_home = PhoneNumberField(verbose_name_(u'Phone (Home)'),null=True,blank=True)
Run Code Online (Sandbox Code Playgroud)
如果以上有问题,实施以下是否更好?
表格.py
class ClientForm(forms.ModelForm):
def __init__(self,*args,**kwargs):
super(ClientForm,self).__init__(*args,**kwargs)
self.fields['phone_cell'].label = _(u'Phone (Cell)')
self.fields['phone_home'].label = _(u'Phone (Home)')
Run Code Online (Sandbox Code Playgroud)
如果您使用 gettext 的惰性版本,则 models.py 中的方法将正常工作:
from django.utils.translation import ugettext_lazy as _
class UserClient(models.Model):
phone_cell = PhoneNumberField(verbose_name=_('Phone (Cell)'), ...)
...
Run Code Online (Sandbox Code Playgroud)
事实上,Django 自己的模型使用相同的技术进行翻译 - 查看AbstractUser类。您可以确定这种方法会正常工作。
即使verbose_name存在于数据库迁移中,也未使用。任何依赖的代码verbose_name都会直接从模型中检索它。例如,ModelForm 字段的默认标签将使用模型的verbose_name,并且由于翻译是惰性的,实际标签将在评估时进行翻译(例如在模板上渲染)。
| 归档时间: |
|
| 查看次数: |
2446 次 |
| 最近记录: |