Supposons que j'ai quelques modèles représentant des objets de la vie réelle: "personne", "président", "Chambre"requête Tricky Django GenericRelation
j'ai aussi une "Collection" modèle, ce qui représente une collection d'enregistrements de ces modèles. Chaque modèle peut être un membre de plus que sur la collection - par conséquent, j'ai également créé un modèle "Membership", qui représente un objet est un membre d'une collection. Il est défini comme suit:
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")
Je veux être en mesure de créer un QuerySet, qui donne une collection, représente tous ses membres d'un modèle donné. Je sais que je peux le faire par programme, mais je dois dans un QuerySet, qui peut être filtré, commandé etc.
EDIT:
Évidemment, cela peut être fait en utilisant SQL brute:
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>)
Mais peut-il être représenté en utilisant le langage de requête Django?
Je veux seulement le queryset de tenir les dossiers d'un modèle ... je pourrais reformuler la question: Puis-je interroger tous les enregistrements du modèle X, de sorte qu'il existe une adhésion qui a le dossier X comme son contenu objet et une collection spécifique dans son champ "collection"? – adamk