projet de classe (models.Model): utilisateurs = models.ManyToManyField (utilisateur, par 'Project_User' =)LEFT OUTER JOIN avec des définitions supplémentaires dans Django
class Project_User(models.Model):
project = models.ForeignKey('Project')
user = models.ForeignKey(User)
property = models.BooleanField()
Tous les projets ont propres lignes de Project_User. Chose, ce dont j'ai besoin est d'obtenir un jeu de requêtes de tous les projets où le champ "propriété" de l'utilisateur courant! = True ou la ligne Project_User de l'utilisateur actuel n'existe pas. Est-ce qu'il y a un moyen de le faire en utilisant l'ORM de django? Comme résultat, j'ai besoin de l'objet Queryset pour lui appliquer d'autres filtres. En utilisant SQL personnalisé, je peux le faire. utilisateur actuel ont id == XXXX:
SELECT * FROM "app_project" LEFT OUTER JOIN "app_project_user"
ON ("app_project"."id" = "app_project_user"."project_id"
AND ("app_project_user"."user_id" = XXXX OR "app_project_user"."user_id" IS NULL))
WHERE ("app_project_user"."property" = false OR "app_project_user"."property" IS NULL);
je l'espère, il est possible, mais je ne sais pas comment, mais ..
Merci pour toute aide!
Ce n'est pas bon pour moi, car ORM génère des sous-requêtes. Et ça ne marche pas, quand j'ai plusieurs champs booléens - une sous-requête pour un champ. – ramusus