J'ai essayé d'accéder à l'objet enfant, par l'intermédiaire de l'objet parent, car je veux effectuer des opérations différentes selon le type de l'objet. Voici ce que j'ai :
#models.py
class A(models.Model):
...
class B(A):
field1 = models.CharField(...)
...
class C(A):
field2 = models.IntegerField(...)
Je pourrais exécuter 2 boucles for et accomplir ce que je veux :
for obj in B.objects.all():
if field1 == 'something':
do some operation
for obj in C.objects.all():
if field2 == 5:
do some other operation
Mais je me demandais s'il n'était pas possible de faire cela avec une seule boucle for et d'accéder à l'enfant par le biais du parent ?
for obj in A.objects.all():
if obj.b and obj.b.field1 == 'something':
do some operation
elif obj.c and obj.c.field2 == 5:
do some other operation
Je pensais aussi que select_related peut faire l'affaire, mais il est dit que cela ne fonctionne que pour ForeignKey
.
De plus, j'espérais pouvoir le faire sans utiliser d'autres applications telles que django-model-utils o django-polymorphe parce que j'ai l'impression qu'il devrait y avoir une simple opération de requête pour faire cela.