在字段之间执行算术运算

F() 表达式可用于在模型字段之间执行算术运算(+-*等),以便定义它们之间的代数查找/连接。

  • 让模型为:

    class MyModel(models.Model):
        int_1 = models.IntegerField()
        int_2 = models.IntegerField()
    
  • 现在让我们假设我们想要检索 MyModel 表的所有对象,他们的 int_1int_2 字段满足这个等式:int_1 + int_2 >= 5。利用 annotate()filter(),我们得到:

    result = MyModel.objects.annotate(
                 diff=F(int_1) + F(int_2)
             ).filter(diff__gte=5)
    

    result 现在包含所有上述对象。

虽然该示例使用 Integer 字段,但此方法将适用于可应用算术运算的每个字段。