获取每个子对象的最大孙子数

时间:2014-12-28 22:38:56

标签: django django-templates django-views

我的设置包含一个联盟模型,可以有许多与之相关的游戏模型,每个游戏可以有2个或更多团队模型与游戏相关联。对于特定的联赛,我想在表格中显示一个游戏及其球队的表格:

Game | Team | Team | Team | Team
1    | 1    | 2    | 3    | 5
2    | 2    | 7    | 9    |
3    | 4    | 1    | 2    |

为了让我这样做,我需要知道提前有多少列,这意味着我需要知道,对于一个特定的联盟,与联盟中任何一场比赛相关的最大球队数量。我可以想到两种方法:

  1. 在我看来,做一些类型的查询来获得答案并将其提供给上下文数据
  2. 在我的模板中,通过一系列循环确定最大值
  3. 我喜欢#2,因为我觉得#1正在使用View逻辑来进行糟糕的演示工作,但#1似乎更快。还有其他方法和/或有人可以就实际实施提供建议吗?

2 个答案:

答案 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()方法,并从模型方法中随处可用,而不是在视图或模板中重复逻辑。