我需要通过比较两个外键来在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
答案 0 :(得分:5)
您必须使用F() expressions来执行此操作
from django.db.models import F
match = UserProfile.objects.filter(user__date_joined__gte = F('group__date'))