J'ai un modèle Django avec deux méthodes de gestion personnalisées. Chacun renvoie un sous-ensemble différent des objets du modèle, basé sur une propriété différente de l'objet.Comment puis-je trouver l'intersection de deux sous-ensembles de Django?
class FeatureManager(models.Manager):
def without_test_cases(self):
return self.get_query_set().annotate(num_test_cases=models.Count('testcase_set')).filter(num_test_cases=0)
def standardised(self):
return self.get_query_set().annotate(standardised=Count('documentation_set__standard')).filter(standardised__gt=0)
(Les deux testcase_set
et documentation_set
se réfèrent à ManyToManyField
s sur d'autres modèles.)
Est-il possible d'obtenir un queryset, ou tout simplement une liste d'objets, qui est le intersectiond des QuerySets retourné par chaque méthode de gestion
Qu'est-ce qui vous empêche de combiner les deux fonctions de filtrage de chaque gestionnaire? –
Vous voulez dire: 'Model.objects.managerMethodOne(). ManagerMethodTwo()'? Cela n'a pas semblé fonctionner. Peut-être que je n'ai pas écrit ma méthode de gestionnaire correctement? –
Le filtre fonctionne lui-même. 'Model.objects.filter (this = cela) .filter (that = somethingelse)'. Pourquoi ne faites-vous pas ça? –