按日期时间加上django queryset中的天数过滤行

问题描述 投票:0回答:1

我有一个模型,其中一个字段datetime作为参考日期,一个字段整数保存从参考日期开始要计算的天数,我需要过滤出那些在django orm中reference_date + days小于当前日期的行。我已经尝试过使用RawSQL,将过滤器委派给mysql,但是我需要访问该行的一列,而且我不知道如何在RawSql表达式中包含F表达式,我尝试了连接字符串,但是它不起作用。包括我的模型描述。

class ActionData(models.Model):
    properties = models.ManyToManyField(Property, through='ActionProperties')
    action = models.ForeignKey(Action, on_delete=models.CASCADE)
    description = models.TextField(null=True)
    days = models.IntegerField(default=0)
    promocioned = models.BooleanField(default=False)
    reference_date = models.DateTimeField(null=True)
    modified_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)

    def __str__(self):
        return str(self.pk) + self.action.name
python django django-queryset rawsql
1个回答
0
投票

这应该为您工作:

ActionData.objects.filter(
    reference_date__lte=timezone.now() - (timedelta(days=1) * F('days'))
)
© www.soinside.com 2019 - 2024. All rights reserved.