Examinez les modèles :
#Models
class A(models.Model):
fieldOfA = models.CharField(max_length = 4)
class B(models.Model):
fieldOfB = models.CharField(max_length = 4)
class C(models.Model):
classA = models.ForeignKey(A, blank=True, null=True)
classB = models.ForeignKey(B, blank=True, null=True)
Lorsque je crée des objets de C, je m'assure qu'un objet a SOIT une relation de classeA, soit une relation de classeB.
Je cherche un seul ensemble de questions qui me permette d'obtenir des objets de C pour des valeurs spécifiques de fieldOfA ou de fieldOfB.
J'ai essayé, mais cela n'a pas fonctionné (le système renvoie [], bien qu'il y ait des résultats valides).
#Views - assume double underscore in the query
from django.db.models import Q
my_query = C.objects.filter(Q(classA _ _isnull = False, classA _ _fieldOfA = 'foo') | Q(classB _ _isnull = False, classB _ _fieldOfB = 'foo'))
Le problème que je vois est le "|" qui est appliqué. Deux querysets différents pour classA et classB fonctionnent bien. Y a-t-il un moyen d'appliquer un seul queryset pour que cela fonctionne ? Ou pire, un moyen de fusionner les querysets individuels.