Предположим, у меня есть несколько моделей, представляющих объекты реальной жизни: " Человек ", " Стул ", " Комната "
У меня также есть модель " 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, который можно фильтровать, заказывать и т. Д.
EDIT:
Очевидно, что это можно сделать с помощью необработанного 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?