在欄位之間執行算術運算
F()
表示式可用於在模型欄位之間執行算術運算(+
,-
,*
等),以便定義它們之間的代數查詢/連線。
-
讓模型為:
class MyModel(models.Model): int_1 = models.IntegerField() int_2 = models.IntegerField()
-
現在讓我們假設我們想要檢索
MyModel
表的所有物件,他們的int_1
和int_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
欄位,但此方法將適用於可應用算術運算的每個欄位。