Tôi có mô hình Django với hai phương pháp quản lý tùy chỉnh. Mỗi trả về một tập hợp con khác nhau của các đối tượng của mô hình, dựa trên một thuộc tính khác của đối tượng.Làm thế nào tôi có thể tìm thấy giao điểm của hai truy vấn 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)
(Cả testcase_set
và documentation_set
tham khảo ManyToManyField
s trên các mô hình khác.)
Có cách nào để có được một queryset, hay chỉ là một danh sách các đối tượng, đó là intersectiond của queryset trả về bởi mỗi phương pháp quản lý?
Điều gì khiến bạn không thể kết hợp hai chức năng lọc của mỗi người quản lý? –
Bạn có nghĩa là 'Model.objects.managerMethodOne(). ManagerMethodTwo()'? Điều đó dường như không hoạt động. Có lẽ tôi không viết chính xác phương thức quản lý của mình? –
Bộ lọc tự hoạt động. 'Model.objects.filter (this = that) .filter (đó = cái gì đó)'. Tại sao bạn không làm điều đó? –