Filtre Django objets relatifs objet existe
Cela est lié à une double question, mais je ne peux pas trouver d'autres. Je vais essayer d'obtenir une liste de photos qui ont des plaintes à formuler. Je ne peux pas tout simplement obtenir les plaintes et de les traiter avec les photos - j'ai besoin d'un queryset de photos.
Cela devrait fonctionner, mais ne semble pas droit:
Photo.objects.filter(complaint__id__gte=0)
Cela ne semble pas être le moyen le plus efficace:
Photo.objects.annotate(Count('complaint')).exclude(complaint__count=0)
Est-il un meilleur moyen?
Vous devez vous connecter pour publier un commentaire.
comment sur ...
Photo.objects.filter(complaint__isnull=False)
de https://docs.djangoproject.com/en/dev/topics/db/queries/
Je ne suis pas sûr de ce qui est la meilleure variante, mais qui fonctionne aussi bien.
Photo.objects.exclude(complaint=None)
Généré la requête SQL ici n'est pas la même que dans le cas avec
.filter(complaint__isnull=False)
, mais le sens est identique..distinct()
appel à travailler avec des valeurs multiples relations.Q
objets. Ce code fonctionne:Q(related_object=None)
si ce n'est pas le cas:Q(related_object__is_null=True)