gpt4 book ai didi

django - 如何在模型或过滤器中存储 manytomanyfield 的计数并聚合 manytomanyfield

转载 作者:行者123 更新时间:2023-12-04 08:53:41 26 4
gpt4 key购买 nike

我有一个模型,我想在其中为 manytomanyfield 的计数创建排名。只有它需要一个整数字段而不是一个 manytomany 字段。我的投票有问题__lt。
最好的做法是创建一个计算选票的 votes_count 整数字段,还是有办法修复此代码以使其正常工作?

class ContestEntry(TimeStampedModel):
votes = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='vote_entry')

def ranking(self):
aggregate = ContestEntry.objects.filter(votes__lt=Count(self.votes)).aggregate(ranking=Count('votes'))
return aggregate['ranking'] + 1

最佳答案

您可以使用 .annotate为了这:

def ranking(self):
return ContestEntry.objects.annotate(
nvotes=Count('votes')
).filter(
nvotes__gt=self.votes.all().count()
).count()
因此,我们首先在此注释 ContestEntry s 同票数 nvotes ,然后我们数出多少 ContestEntry还有更多 nvotesself的票数目的。

关于django - 如何在模型或过滤器中存储 manytomanyfield 的计数并聚合 manytomanyfield,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63962135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com