我有一个模型:

class Examle(models.Model):
  date = models.DateTime(auto_add_now=True)
  duration = models.IntegerField(default=90) # days


我想像这样过滤它:

Example.objects.filter(date_lt=datetime.today() - timedelta(days=F('duration')))


当然,timedelta不会将F对象作为有效参数,但是希望您理解我的意思。

最佳答案

您不能将F传递给timedelta,但可以使用它进行计算:

timedelta(days=1) * F('duration')


另外,如果您使用的是Django 2.x,请尝试:

Example.objects.annotate(days_before_today=ExtractDay(datetime.today() - F('date'))\
    .filter(days_before_today__gte=F('duration'))

关于python - 从现在开始Django过滤器对象F('duration'),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55144997/

10-15 12:45