Я думаю, что есть более простой способ решения этой проблемы. То есть с помощью обратной связи между моделями . Например:
Если у вас есть отношения между Владельцем и Foo, это выглядит так:
class Foo(models.Model):
# fields
class Ownership(models.Model):
foo = models.ForignKey(Foo, on_delete=models.CASCADE)
Тогда вы можете использовать
Foo.objects.filter(ownership__user=self, ownership__content_type=content_type)
Если у вас есть related_name
в ForignKey, например:
foo = models.ForignKey(Foo, on_delete=models.CASCADE, related_name='owners')
Затем используйте его для запросов:
Foo.objects.filter(owners__user=self, owners__content_type=content_type)
Преимущество этого решения заключается в том, что вам не нужно делать несколько запросов к БД.