2013-01-14 77 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'))