我坚持以下。
我的两个简化模型:
Class Transaction(models.Model):
ticker= models.ForeignKey(Stock, on_delete=models.CASCADE)
dateOfPurchase = models.DateField()
Class Dividend(models.Model:
ticker = models.ForeignKey(Stock, on_delete=models.CASCADE)
date = models.DateField()
value = models.DecimalField(max_digits=8, decimal_places=5)
我设法做到了:如果红利中的股票代码不在交易中我排除了股息实例:
transaction_qs = Transaction.objects.all()
qs = Dividend.objects.all()
dividend_qs = qs.filter(ticker__in=transactions_qs.values('ticker'))
到目前为止一切顺利。
第二部分:现在我想过滤掉dividend_qs
个实例,以便为每个实例检查是否存在至少一个Transaction
个dateOfPurchase
为lower_than_equal {{1}的实例}}
我尝试了一些for循环方法,但没有得到我想要的东西。
任何帮助?
答案 0 :(得分:2)
您可以使用join在一个查询中执行所需的一切:
from django.db.models import F
queryset = Dividend.objects.filter(ticker__transaction__dateOfPurchase__lte=F('date'))
我没有对此进行测试,但我认为它应该可行。