使用另一个查询集日期字段筛选Queryset

时间:2018-05-15 11:53:13

标签: django

我坚持以下。

我的两个简化模型:

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个实例,以便为每个实例检查是否存在至少一个TransactiondateOfPurchase为lower_than_equal {{1}的实例}}

我尝试了一些for循环方法,但没有得到我想要的东西。

任何帮助?

1 个答案:

答案 0 :(得分:2)

您可以使用join在一个查询中执行所需的一切:

from django.db.models import F

queryset = Dividend.objects.filter(ticker__transaction__dateOfPurchase__lte=F('date'))

我没有对此进行测试,但我认为它应该可行。