Я пытался получить доступ к дочернему объекту через родительский объект, поскольку я хочу выполнять различные операции в зависимости от типа объекта.Что у меня есть:
#models.py
class A(models.Model):
...
class B(A):
field1 = models.CharField(...)
...
class C(A):
field2 = models.IntegerField(...)
Я мог бы выполнить 2 для циклов и выполнить то, что я хочу:
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
Но я подумал, нельзя ли сделать это с 1 дляЦикл и доступ к ребенку через родителя?
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
Я также думал, что select_related может добиться цели, но он говорит, что работает только для ForeignKey
.
* 1014Более того, я надеялся сделать это без использования дополнительных приложений, таких как
django-model-utils или
django-polymorphic , потому что я чувствую, что должна быть простая операция запросасделать это.