2016-07-27 6 views
1

1つのテーブルの列に翻訳が格納された多言語Webサイト。 すでにフィルタリングされた翻訳を含むテンプレートにクエリセットを渡す必要があります。 言語変数はセッションに格納されます。フィールド値を持つ注釈クエリセット

class Item(models.Model): 
    name = models.CharField(max_length=128) 
    description = models.ForeignKey(Localization) 

class Localization(models.Model): 
    klingon = models.TextField(blank=True, null=True, verbose_name='klingon') 
    english = models.TextField(blank=True, null=True, verbose_name='english') 

思想だけで必要なテキストを適量に注釈を付けるとよいでしょう、しかし私は、フィールド値と注釈を付ける方法を見つけることができませんでした。

item = Item.objects.all().annotate(text=description.klingon) 

別のアプローチのようなものは

item.description|choose_lang:request 

が、テンプレートがすっきりと思われる前に適量をソートするようにテンプレートフィルタを使用することです。

答えて

7

ここでF()式を使用できます。

from django.db.models import F  
item = Item.objects.all().annotate(text=F('description__klingon')) 

ドキュメント:https://docs.djangoproject.com/en/1.9/ref/models/expressions/#using-f-with-annotations

+0

ありがとうございました。私はこれらのFを自分で試しましたが、コードの別の場所でミスをしたことが判明しました。失敗したとき、私はこのF命令が間違っていると考えました。 –

関連する問題