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']