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

Mik*_*ail 0 python django foreign-keys

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

match = UserProfile.objects.filter(
    user__date_joined__gte = group__date
)
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

小智 5

您必须使用F()表达式来执行此操作

from django.db.models import F

match = UserProfile.objects.filter(user__date_joined__gte = F('group__date'))
Run Code Online (Sandbox Code Playgroud)