Mam model Django z dwoma niestandardowymi metodami menedżera. Każdy zwraca inny podzbiór obiektów modelu, w oparciu o inną właściwość obiektu.Jak mogę znaleźć przecięcie dwóch zestawów zapytań 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)
(Zarówno testcase_set
i documentation_set
patrz ManyToManyField
s na innych modelach.)
Czy istnieje jakiś sposób, aby uzyskać queryset, lub po prostu listę obiektów, które jest intersectiond z querysets zwracane przez każdy metoda menedżera?
Co powstrzymuje Cię przed połączeniem dwóch funkcji filtrowania z każdym menedżerem? –
Masz na myśli jak 'Model.objects.managerMethodOne(). ManagerMethodTwo()'? To nie działa. Może nie napisałem poprawnie swojej metody zarządzania? –
Filtr działa sam. 'Model.objects.filter (this = that) .filter (that = somethingelse)'. Dlaczego tego nie robisz? –