Джанго: Как я могу сделать аннотацию только тогда, когда все мои модели имеют определенную ценность - PullRequest
0 голосов
/ 05 октября 2018

Позвольте мне объяснить лучше ... У меня есть следующие модели:

class BetGroup(models.Model):
  ...
  expected_value = models.DecimalField(_('Expected Value')...
  code = models.CharField(_('Code'), max_length=126, blank=True, null=True)
  ...

class Bet(models.Model):
  ...
  bet_group = models.ForeignKey(
    BetGroup, verbose_name=_('Bet group'),
    related_name='bet', on_delete=models.CASCADE
  )
  is_correct = models.NullBooleanField(_('Is correct?'), default=None)
  ...

Я хочу сделать запрос, когда все ставки в bet_group верны. Сумма Ожидаемое значение.

Я хочу проверитьесли все ставки верны, то суммируйте ожидаемое значение для каждой группы ставок.

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете попытаться сделать что-то , например :

BetGroup.objects.exclude(bet__is_correct=False)

, чтобы получить группы ставок, в которых все ставки верны, и затем выполнить агрегат / annotateсвыше expected_value, например:

from django.db.models import Sum 
BetGroup.objects.exclude(bet__is_correct=False).aggregate(sum_expected_value=Sum('expected_value')).get('sum_expected_value')
...