在欄位之間執行算術運算

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 欄位,但此方法將適用於可應用算術運算的每個欄位。