Django ORM. Проверьте, что сумма дополнительного поля модели отношений m2m равна 100

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

class PortfolioTicker(models.Model):
    """
    Helper model for M2M relationship between Tickers and Portfolios
    """

    portfolio = models.ForeignKey(Portfolio, models.PROTECT, related_name="tickers")
    ticker = models.ForeignKey(Ticker, models.PROTECT)
    weight = models.FloatField(null=False)

    def __str__(self) -> str:
        return f"{self.portfolio} {self.ticker} {self.weight}"

если вам нужен отчет по каждому тикеру:

x = PortfolioTicker.objects.values('ticker').order_by('ticker').annotate(summa=Sum('weight')).annotate(hundert=Case(When(summa=100, then=True), default=False))

если вы хотите проверить наличие заданного тикера

PortfolioTicker.objects.filter(ticker=given_ticker).aggregate(summa=Sum('weight'))['summa']
Вернуться на верх