如何在Django模型中基于字段比较值进行过滤?

时间:2019-05-02 11:09:07

标签: django django-models django-filter

如何根据比较任何模型中字段的内部值来过滤查询集?

例如,看看下面的例子:

class Model1(models.Model):
    num1 = models.IntegerField()
    num2 = models.IntegerField()

说我必须过滤num2-num1小于10的Model1值。 那么,我们将如何写过滤条件? 那是Model1.objects.filter(???)

也可以说这些字段是日期时间,如下所示:

class Model2(models.Model):
    t1 = models.DateTimeField(auto_now_add=True)
    t2 = models.DateTimeField()

我们如何实现与上述类似的情况。假设我们要根据t2-t1进行小于10小时的过滤?

1 个答案:

答案 0 :(得分:1)

您可以注释计算,然后对结果进行过滤。

from django.db.models import F
Model1.objects.annotate(diff=F('num1')-F('num2')).filter(diff__lt=10)