Предположим, у меня есть несколько моделей, представляющих объекты из реальной жизни: "Человек", "Стул", "Комната"
У меня также есть модель "Collection", которая представляет некоторую коллекцию записей этих моделей.
Каждая модель может быть членом нескольких коллекций, поэтому я также создал модель "Membership", которая представляет объект, являющийся членом коллекции. Он определяется следующим образом:
class Membership(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
collection = models.ForeignKey('Collection', related_name="members")
Я хочу иметь возможность создать QuerySet, который для данной коллекции представляет все ее члены данной модели. Я знаю, что могу сделать это программно, но мне это нужно в QuerySet, который можно фильтровать, упорядочивать и т. д.
ИЗМЕНИТЬ:
Очевидно, это можно сделать с помощью необработанного SQL:
SELECT * FROM
( modelx INNER JOIN membership ON modelx.id = membership.object_id)
WHERE
( membership.collection_id=<my-collection-id> AND
membership.content_type_id=<modelx-type-id> )
Но можно ли его представить с помощью языка запросов Django?