DJANGO翻译使用Djangodatatrans翻译包括“slug”在内的模型

2024-04-18 07:27:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在检查django datatrans,以便与django localeurl并行使用。在

我要做的是转换段塞,以便可以按如下方式访问转换后的对象:

  • 在www.mysite.com/fr/bonjour(法语)
  • 在www.mysite.com/en/hello(英语)

我需要依靠现在的语言。在

举例说明:

如果我这样做: 对象=MyObject.objects.get(slug=slug_来自\u url)

那么“get”应该在以下任一情况下找到该对象:

  • 当前的_语言是FR和slug_from_url==bonjour
  • 当前的_语言是EN和slug_from_url==hello

我无法获得这种行为,相反,“get”只在默认语言中与“slug_from_url”一起使用。。。无论执行过程中的“当前语言”是什么。在

也许我的方法不对,所以任何解决方案都是受欢迎的! 提前谢谢


Tags: 对象djangofromcom语言urlhelloget
1条回答
网友
1楼 · 发布于 2024-04-18 07:27:00

在这种情况下,最简单的解决方案是查询KeyValue模型

from datatrans.models import KeyValue
from datatrans.utils import get_current_language, get_default_language

digest = KeyValue.objects.get(value=slug_from_url, language=get_current_language()).digest
value = KeyValue.objects.get(digest=digest, language=get_default_language()).value

# value now contains 'hello'
myobject = MyObject.objects.get(slug=value)

这段代码实际上将字符串转换回其原始语言,以便执行查找。我知道这些都是额外的查询,但是如果你有一些缓存,这根本不会影响你的性能。在

你可以把它放在一些实用函数中以获得更好的重用性。在

顺便说一句,Datatrans只用于转换模型的可显示内容,而不是查找字段,因为这将是对Django querysetapi的一个非常大的更改。在

希望这能帮助。。。在

相关问题 更多 >