J'ai deux modèles:Obtenez tous les objets avec ensemble vide de ceux liés
class Content(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField(db_index=True)
content_object = generic.GenericForeignKey()
show = models.BooleanField(default=False)
class Foo(models.Model):
rel = generic.GenericRelation(Content)
Et je veux toutes les méthodes Foo qui est l'objet du contenu lié (il n'y aurait qu'un seul) a show==True
ou qui doesn pas d'objet apparenté du tout. Quelque chose comme:
Foo.objects.filter(Q(rel__show=True) | Q(rel__hasnone=True))
Mais bien sûr, il n'y a rien comme hasnone
dans django.
Existe-t-il un autre moyen de réaliser cela (malheureusement, l'agrégation ne fonctionne pas avec les relations génériques et je ne peux pas compter les éléments).
J'ai vu votre réponse ci-dessous, mais voici une idée plus simple: faites défiler les ensembles associés et ajoutez tous les objets associés à une liste. Parcourez à nouveau le modèle et ignorez tous les enregistrements de la liste. Cela serait plus lent, mais aurait l'avantage de coller entièrement avec python et l'ORM de Django. –