7

多言語サイトに django modeltranslation を使用しています。

言語フォールバックは、属性を直接読み取るときにうまく機能します。たとえば、現在の言語がドイツ語で object.title を出力すると、ドイツ語のタイトルが定義されていない場合、英語のタイトルが表示されます。

クエリでもフォールバックが機能することを期待していますが、そうではありません。実際、私が次のようなことをすると

results = MyModel.objects.filter(title = 'hello')

ドイツ語のタイトルが設定されていない場合、これは結果を取得しませんが、英語のタイトル「hello」のオブジェクトを返したいと思います。

どうすればこれを機能させることができますか?

前もって感謝します。

4

3 に答える 3

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

なぜこれが機能するのですか?特定の言語を照会すると、ModelTranslation がそれを保持するためです。それ以外の場合は、現在の言語を使用します。

それが役立つことを願っています!

于 2016-09-26T20:15:55.843 に答える