使用字段值注释查询集

时间:2016-07-27 13:27:30

标签: django multilingual annotate

多语言网站,翻译存储在一个表的列中。 需要将查询集传递给已经过滤过的翻译的模板。 语言变量存储在会话中。

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')

只需用所需的文本注释qs就可以了,但是我没有找到如何使用字段值进行注释。像

这样的东西
item = Item.objects.all().annotate(text=description.klingon)

另一种方法是使用像

这样的模板过滤器
item.description|choose_lang:request

但在模板之前排序qs似乎更整洁。

1 个答案:

答案 0 :(得分:8)

您可以在此处使用F()表达式

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

Source