Django 模型翻译查询回退

sab*_*ina 8 python django internationalization django-modeltranslation

我正在为多语言站点使用 django 模型翻译。

直接读取属性时,语言回退效果很好。例如,如果当前语言是德语并且我打印 object.title,如果未定义德语标题,我将看到英文标题。

我希望回退也适用于查询,但事实并非如此。事实上,如果我做类似的事情

results = MyModel.objects.filter(title = 'hello')
Run Code Online (Sandbox Code Playgroud)

如果未设置德语标题,这将不会得到任何结果,而我希望它返回带有英文标题“你好”的对象。

我怎样才能使这项工作?

提前致谢。

azu*_*uax 0

这里要做的就是显式查询所需的语言。在你的情况下:

from django.db.models import Q
# ...
# define your query like this: 
results = MyModel.objects.filter(Q(title_de = 'hello') | Q(title_en = 'hello'))
# supposing you have German and English languages set
Run Code Online (Sandbox Code Playgroud)

为什么要做这个工作?因为当您查询特定语言时,ModelTranslation 会保留它。否则它使用当前语言。

我希望它有帮助!