我试图通过父对象访问子对象,因为我想根据对象的类型执行不同的操作。 我手头有以下代码:
#models.py
class A(models.Model):
...
class B(A):
field1 = models.CharField(...)
...
class C(A):
field2 = models.IntegerField(...)
我可以使用两个 for 循环来实现我想要的效果:
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
但是我在想,是否可以使用一个 for 循环并通过父级访问子级来实现这个操作呢?
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
。
此外,我希望在不使用其他应用程序(如django-model-utils或django-polymorphic)的情况下完成此操作,因为我觉得应该有一个简单的查询操作来完成这个需求。