我的设置包含一个联盟模型,可以有许多与之相关的游戏模型,每个游戏可以有2个或更多团队模型与游戏相关联。对于特定的联赛,我想在表格中显示一个游戏及其球队的表格:
Game | Team | Team | Team | Team
1 | 1 | 2 | 3 | 5
2 | 2 | 7 | 9 |
3 | 4 | 1 | 2 |
为了让我这样做,我需要知道提前有多少列,这意味着我需要知道,对于一个特定的联盟,与联盟中任何一场比赛相关的最大球队数量。我可以想到两种方法:
我喜欢#2,因为我觉得#1正在使用View逻辑来进行糟糕的演示工作,但#1似乎更快。还有其他方法和/或有人可以就实际实施提供建议吗?
答案 0 :(得分:1)
在不知道您的实际代码的情况下,我只是在猜测。如果您想在游戏中为每个团队的请求计数,您可以轻松地将其附加到上下文中。例如,使用基于类的视图,您可以覆盖get_context_data()
def get_context_data(self, **kwargs):
# Call the base implementation first to get a context
context = super(YOURGAMEVIEWCLASS, self).get_context_data(**kwargs)
# Add in a QuerySet of all the books
context['team_count'] = Team.objects.filter(game=x).count()
return context
注意:Django基于通用类的视图现在自动在上下文中包含一个视图变量,因此有更好的方法:http://reinout.vanrees.org/weblog/2014/05/19/context.html
....但是如果你想要做的就是得到你已经拥有的对象的数量,那么我认为你没有理由不能在模板中做到这一点,即{{ teams.count }}
。毕竟,我猜你只是用它来进行持久化。
答案 1 :(得分:0)
这有点难以理解,但让我就我如何看待这个问题提出建议。
最好在可能的情况下将逻辑放在模型上,几乎总是这样。有没有办法在游戏模型上放置max_team_count模型方法来获得解决方案?
在模板或视图中,您可以调用game.max_team_count()方法,并从模型方法中随处可用,而不是在视图或模板中重复逻辑。