我有一个模型,其中一个字段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
这应该为您工作:
ActionData.objects.filter(
reference_date__lte=timezone.now() - (timedelta(days=1) * F('days'))
)