2010-02-25 4 views
0

J'ai une requête SQL qui s'exécute sur la base de données Postgres de ma webapp basée sur Django. La requête s'exécute sur les données stockées par Django-Notifications (une application réutilisable) et renvoie une liste d'adresses e-mail qui n'ont pas désactivé un type de notification spécifique. Ce que je voudrais vraiment pouvoir faire est de construire une application qui le fait à la demande, donc je cherche un exemple de la façon de convertir le SQL afin qu'il puisse fonctionner dans une vue Django qui passera sur une liste d'email formatée. Le SQL est actuellement ainsi:Convertir une requête SQL au format convivial Django pour l'application

gr_webapp=# select email from emailconfirmation_emailaddress where verified and user_id not in 
(select user_id from notification_noticesetting s join notification_noticetype t on s.notice_type_id = t.id 
where t.label = 'announcement' and not s.send); 

Répondre

1

Vous pourriez avoir à faire des ajustements appropriés dans la mesure où les noms de modèle vont, puisque vous ne les avez pas montrer à votre question:

users_to_exclude = Noticesetting.objects.filter(send=False, notice_type__label='announcement').values('user') 
emails = Emailaddress.objects.exclude(user__in=users_to_exclude) 
+0

J'ai essayé avec une variation de votre exemple, mais il donne "Error binding parameter 0 - type probablement non pris en charge." . users_to_exlude = NoticeSetting.objects.filter (notice_type = 'annonce') valeurs ('utilisateur') emails = EmailAddress.objects.exclude (user = users_to_exlude) \t des e-mails d'impression –

+0

Ah je vois: je faisais mal - comme vous avez dit: \t users_to_exlude = NoticeSetting.objects.filter (notice_type = 'annonce') valeurs ('user') \t emails = EmailAddress.objects.exclude (user__in = users_to_exlude). –

Questions connexes