我有两个多对多相关的模型。文章和标签模型。两者都是使用 django-parler 的 TranslateableModel。
models.py
class Article(BaseModelMixin, TranslatableModel):
translations = TranslatedFields(
title=models.CharField(max_length=255),
short_description=models.CharField(max_length=255),
body=HTMLField(),
slug=models.SlugField(max_length=255, blank=True, null=True, unique=True),
),
tags = models.ManyToManyField("Tag", related_name="articles")
class Tag(TranslatableModel):
translations = TranslatedFields(
slug=models.SlugField(max_length=55, blank=True, null=True),
name=models.CharField(_("Tag name"), max_length=50),
)
我想获取当前语言的所有标签和文章计数。
例如,如果用户访问该页面/en/blog
,我希望他们看到标签以及该标签的英文文章数量。对于 django 之类的东西Django (7 articles), Ruby on rails (4 articles)
可能有 10 篇文章,但只有 7 篇被翻译成英文。
我所拥有的是这样的:
Tag.objects.translated()
.annotate(articles_count=(Count("articles__translations")))
但这给了我总翻译的数量。如果一篇文章同时以英文和法文存在,则计为双倍。
我怎样才能使它在给定标签中只给我当前语言的文章数量?