通过比较两个外键来过滤django模型

时间:2013-01-14 17:26:29

标签: python django foreign-keys

我需要通过比较两个外键来在Django中创建一个过滤器。双下划线语法仅适用于等式的左侧。因此,右侧的任何内容都会引发错误:

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

Django(或python here)不会将group_ date解释为可解析的变量名,并抱怨它没有定义。我可以切换变量,然后用户 _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

1 个答案:

答案 0 :(得分:5)

您必须使用F() expressions来执行此操作

from django.db.models import F

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