Django聚合,在条件时使用AND / OR运算符

时间:2016-09-05 08:09:32

标签: python django aggregate django-queryset

使用以下查询集我想在when子句中添加和/或条件,但是我得到语法错误。 是可以在单个查询集中执行还是应该拆分?

Game.objects.prefetch_related('schedule').filter(Q(team_home_id=625) | Q(team_away_id=625), schedule__date_time_start__lte=timezone.now())
  .aggregate(
    wins=Sum(Case(When(
      score_home__gt=F('score_away') & team_home_id=625 |
      score_away__gt=F('score_home') & team_away_id=625, then=1), 
      default=0, output_field=IntegerField()
    )),
  )

1 个答案:

答案 0 :(得分:1)

根据docs,您在使用复杂条件时必须使用Q个对象(就像您在filter中所做的那样)。一个例子:

When(Q(name__startswith="John") | Q(name__startswith="Paul"), then='name')