2013-01-14 4 views
0

J'ai besoin de créer un filtre dans Django en comparant deux clés étrangères l'une à l'autre. La syntaxe double-underscore ne fonctionne que sur le côté gauche de l'équation. Donc, tout ce qui est sur le côté droit renvoie une erreur:Filtrer un modèle django en comparant deux clés étrangères

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

Django (ou python ici) n'interprète pas group_ la date comme nom de variable analysable, et se plaint que ce n'est pas défini. Je peux changer les variables, et l'utilisateur _date_joined ne serait pas défini. (Les noms de variables ici sont juste un exemple)

Ce que je suis en train de réaliser ressemblerait à ceci dans 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 

Répondre

5

Vous devrez utiliser F() expressions pour faire

from django.db.models import F 

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