Наследование модели не будет автоматически возвращать экземпляры подкласса - если вы спросите ORM о Foos, он выдаст вам Foos. Вам нужно спросить, есть ли объект Bar с тем же первичным ключом:
for x in foos:
Bar.objects.filter(pk=x.pk).exists() # True if it's a Bar, too
Corn.objects.filter(pk=x.pk).exists() # True if it's a Corn, too
Вы также можете использовать имя модели (в нижнем регистре) в качестве атрибута, который будет выполнять поиск за вас, но это не гарантирует успеха (очевидно), поэтому вам нужно защититься от исключений типа DidNotExist:
for x in foos:
try:
x.bar
# it's a bar
except Bar.DoesNotExist:
# it's not a bar
pass
try:
x.corn
# it's a corn
except Corn.DoesNotExist:
# it's not a corn
pass