我是django的新手,到目前为止我很喜欢它,特别是它的社区。这是我的问题:我有这个模型
class Nationality(models.Model):
nationality_fr = models.CharField(max_length=50)
nationality_en = models.CharField(max_length=50)
show_flag = models.BooleanField()
display_order = models.PositiveSmallIntegerField()
def __str__(self):
return self.nationality_fr
我想更改__ str __函数以返回nationality_fr,如果用户选择的语言是" fr"和language_en如果所选语言是" en"。我需要这个的原因是因为我显示选择国籍的下拉菜单供用户选择,他/她应该看到他/她的语言选择。有什么方法可以解决这个问题?
注意:我知道国家/地区有一个不错的应用,但除了这个国家/地区的情况外,我应该可以为其他方案执行此操作。
答案 0 :(得分:0)
最简单的方法是get_language()
,它会根据settings.LANGUAGE_CODE
设置告诉您当前线程中的语言。
from django.utils.translation import get_language
def __str__(self):
if get_language().startswith('fr'):
return self.nationality_fr
else:
return self.nationality_en
如果让Django动态设置语言,基于URL子字符串或浏览器头等请求参数,请使用django.utils.translation.get_language_from_request
代替(自Django 1.8开始)。 See docs here
答案 1 :(得分:0)
经过一番研究,我找到了解决方案: django.utils.translation.get_language()。它返回当前线程中使用的语言,你可以在如下模型中使用它:
from django.utils import translation
@property
def nationality(self):
lang = translation.get_language()
if lang == "fr":
return self.nationality_fr
else:
return self.nationality_en
def __str__(self):
return self.nationality