2011-05-04 23 views
7

說我有一個模型,它看起來像:如何使一個查詢過濾其中一列等於另一個同一個表的行?

class StockRequest(models.Model): 
    amount_requested = models.PositiveIntegerField(null=True) 
    amount_approved = models.PositiveIntegerField(null=True) 

有沒有什麼辦法讓一個Django查詢會告訴我哪裏有amount_requested之間的一些關係的所有請求,並amount_approved在一個特定的對象/行?

在SQL這將是簡單的:

select * from stockrequest where amount_requested = amount_approved; 

select * from stockrequest where amount_requested = amount_approved; 

在Django中,我不知道,如果是可以做到的,但我想是這樣的下面(注:語法完全組成,不起作用)。

StockRequest.objects.filter(amount_requested="__amount_approved") 
+0

的可能重複[比較對象字段Django的ORM(http://stackoverflow.com/questions/5877856/comparing-object-fields-with-djangos-orm) – 2011-05-04 17:40:08

+0

[如何創建一個Django查詢集過濾器比較同一模型中的兩個日期字段]可能的重複(http://stackoverflow.com/questions/12380448/how-to-create-a-django-queryset-filter-comparing-兩個日期字段,在最相同-MOD) – 2016-06-12 21:27:32

回答

2

是的,可以。你可以use the built in "F" object來做到這一點。

的語法是:

from django.db.models import F 
StockRequest.objects.filter(amount_requested=F("amount_approved")) 

StockRequest.objects.filter(amount_requested__gt=F("amount_approved")) 

注:我發現後,我馬上就寫完了問題的答案。由於我沒有在任何地方看到Stack Overflow,所以我將這個答案留給它。

相關問題