J'essaye de faire sélectionner un modèle en utilisant une relation avec une clé étrangère générique, mais cela ne fonctionne pas comme prévu.Django générique clé étrangère et select_related
je pense qu'il est mieux illustré et compréhensible avec le code
class ModelA(models.Model):
created = models.DateTimeField(auto_now_add=True)
class ModelB(models.Model):
instanceA = models.ForeignKey(ModelA)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey()
class ModelC(models.Model):
number = models.PositiveIntegerField()
bInstances = generic.GenericRelation(ModelB)
# Creating an instance of A and C
aInstance=ModelA.objects.create()
cInstance=ModelC.objects.create(number=3)
# Adding instance of C to the B_set of instance A
aInstance.modelb_set.add(content_object=cInstance)
# Select all ModelA instances that have C as content object? Does not work
whatIWant = ModelA.objects.filter(modelb__content_object=modelCInstance)
# Pseudo-solution, requires calling whatIWant.modelA
whatIWant = cInstance.bInstances.select_related("modelA")
Pour être clair, je voudrais que cette ligne a fonctionné: ModelA.objects.filter(modelb__content_object=modelCInstance)
, apparemment django ne prend pas en charge content_object sur les relations de filtre.
Merci d'avance!
Qu'attendez-vous? Nous ne pouvons pas répondre à une question s'il n'y en a pas. –
J'ai édité le message afin de le rendre plus clair, désolé – Clash