2013-01-14 74 views
0

我需要通過比較兩個外鍵彼此在Django中創建一個過濾器。雙下劃線語法只能在等式左邊起作用。 (在這裏或Python)通過比較兩個外鍵過濾Django模型

match = UserProfile.objects.filter(
    user__date_joined__gte = group__date 
) 

Django不解釋GROUP_ 日期作爲解析的變量名,並抱怨說,它不是定義:所以不管是在右側拋出一個錯誤。我可以切換變量,然後用戶 _date_joined將是未定義的。 (這裏的變量名稱只是一個例子)

我試圖實現應該是這樣的SQL:

SELECT * FROM profile p, user u, group g WHERE 
    p.u_id = u.id AND 
    u.group_id = g.id AND 
    u.date_joined >= g.date 

回答

5

你將不得不使用F() expressions做到這一點

from django.db.models import F 

match = UserProfile.objects.filter(user__date_joined__gte = F('group__date'))