用字段值注释查询集
Annotate query set with field value
多语言网站,翻译存储在一列中 table。
需要将查询集传递给已过滤翻译的模板。
语言变量存储在会话中。
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 进行排序似乎更整洁。
您可以在此处使用 F() 表达式
from django.db.models import F
item = Item.objects.all().annotate(text=F('description__klingon'))
多语言网站,翻译存储在一列中 table。 需要将查询集传递给已过滤翻译的模板。 语言变量存储在会话中。
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 进行排序似乎更整洁。
您可以在此处使用 F() 表达式
from django.db.models import F
item = Item.objects.all().annotate(text=F('description__klingon'))