0

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

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

Django(或此处的python)不会将 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
4

1 回答 1

5

您将不得不使用F() 表达式来执行此操作

from django.db.models import F

match = UserProfile.objects.filter(user__date_joined__gte = F('group__date'))
于 2013-01-14T17:53:03.497 回答