Is there a way to determine what the 'real' class of a Django database object is, after it has been returned from a query for on a base class?
For instance, if I have these models...
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)
And create these instances...
Person(name='Dave').save()
Dog(name='Mr. Rufflesworth').save()
If I do a query like Animal.objects.all()
, I end up with two Animal
instances, not an instance of Person
and an instance of Dog
. Is there any way to determine which instance is of which type?
FYI: I already tried doing this...
isinstance(Animal.objects.get(name='Dave'),Person) # <-- Returns false!
But that doesn't seem to work.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…