【发布时间】:2016-10-01 13:01:36
【问题描述】:
我设置了以下模型:
class Team(models.Model):
# stuff
class Alliance(models.Model):
# an alliance is made up of 3 teams
teams = models.ManyToManyField(Team)
class Match(models.Model):
# 2 alliances per match
alliances = models.ManyToManyField(Alliance)
# 1 winner per match
winner = models.ForeignKey(Alliance, related_name='winner')
我正在尝试找出哪些球队和联盟的胜利次数最多。我已经成功地让联盟解决了这个问题:
from collections import Counter
def most_alliance_wins():
matches = Match.objects.all()
count = Counter()
for m in matches:
count[m.winner] += 1
# Remove ties
del count[None]
return count.most_common(5)
但是,我的团队 wins 方法不起作用,说我无法访问模型的管理器,但我不确定我实际上是在代码中的哪个位置尝试访问管理器,所以我'我有点失落。
from collections import Counter
def most_team_wins():
matches = Match.objects.all()
count = Counter()
for m in matches:
for team in m.winner.objects.all():
count[team] += 1
return count.most_common(5)
任何帮助将不胜感激
【问题讨论】:
-
最好将您的问题的答案发布为答案,而不是编辑以分享 Q/A 风格以供将来可能遇到同样问题的人使用。
-
好的,我会这样做的。
-
是的,我在这个问题上遗漏了一些类似的东西。到目前为止,从我的测试用例中一切正常。
标签: python django python-3.x count django-queryset