0
我有一個模型Book
與一個外鍵來模型Publisher
。Django:將查詢集合與不同的過濾器
class Publisher(models.Model):
...
class Book(models.Model):
publisher = models.ForeignKey(Publisher)
...
在一個單獨的應用程序,我有一個模型Task
可以有一個通用外鍵的任何其他模型。
class Task(models.Model):
content_type = models.ForeignKey(ContentType)
object_pk = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_pk')
complete = models.BooleanField(default=False)
...
我希望能夠以一個方法添加到Publisher
模型,返回與它或任何出版商的圖書相關的所有任務。我可以單獨做他們:
class Publisher(models.Model):
...
def get_tasks(self):
return Task.objects.filter(content_type=ContentType.objects.get_for_model(self), object_pk=self.pk)
def get_book_tasks(self):
return Task.objects.filter(content_type=ContentType.objects.get_for_model(Book), object_pk__in=self.related_books.values_list('pk', flat=True))
但我希望能夠到這兩個的組合爲返回單個查詢集的方法,讓我的任務屬性(如get_all_tasks()
方法將進一步過濾它讓我做Publisher.objects.first().get_all_tasks().filter(complete=False)
)