gpt4 book ai didi

Django 详细名称和翻译

转载 作者:行者123 更新时间:2023-12-04 21:58:46 24 4
gpt4 key购买 nike

有人可以告诉我以下方法在翻译方面是否有问题?

我担心在数据库迁移时冗长的名称会变得固定。

models.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)

如果上面有问题,是不是最好实现以下?

forms.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)')

最佳答案

如果您使用 gettext 的惰性版本,您在 models.py 中的方法将正常工作:

from django.utils.translation import ugettext_lazy as _

class UserClient(models.Model):
phone_cell = PhoneNumberField(verbose_name=_('Phone (Cell)'), ...)
...

事实上,Django 自己的模型使用相同的技术进行翻译 - 看看 AbstractUser类(class)。您可以确定这种方法会正常工作。

虽然verbose_name存在于数据库迁移中,但并未使用。任何依赖 verbose_name 的代码都将直接从模型中检索它。例如,ModelForm 字段的默认标签将使用模型的 verbose_name,由于翻译是惰性的,因此实际标签将在评估时进行翻译(例如,在模板上渲染)。

关于Django 详细名称和翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35594839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com