Есть ли способ определить, что такое "настоящий" класс объекта базы данных Django после того, как он был возвращен из запроса для базового класса?
Например, если у меня есть эти модели ...
class Animal(models.Model):
name= models.CharField(max_length=128)
class Person(Animal):
pants_size = models.IntegerField(null=True)
class Dog(Animal):
panting_rate = models.IntegerField(null=True)
И создать эти экземпляры ...
Person(name='Dave').save()
Dog(name='Mr. Rufflesworth').save()
Если я выполняю запрос, подобный Animal.objects.all()
, я получаю два экземпляра Animal
, а не экземпляр Person
и экземпляр Dog
. Есть ли способ определить, какой экземпляр какого типа?
К вашему сведению: я уже пытался это сделать ...
isinstance(Animal.objects.get(name='Dave'),Person) # <-- Returns false!
Но, похоже, это не сработает.