我有一个名为BankAccount基类的类.我也有CheckingAccount和SavingsAccount继承的类BankAccount.
BankAccount不是一个抽象类,但我不是从它创建一个对象,只是继承类.
然后,我执行这样的查询:
account = BankAccount.objects.get(id=10)
Run Code Online (Sandbox Code Playgroud)
我怎么知道,如果帐户CheckingAccount或SavingsAccount?
我现在这样做的方式是这样的:
checking_account = CheckingAccount.objects.get(id=account.id)
Run Code Online (Sandbox Code Playgroud)
如果存在,则为a CheckingAccount,否则为a SavingsAccount.
有没有办法确定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)
Run Code Online (Sandbox Code Playgroud)
并创建这些实例......
Person(name='Dave').save()
Dog(name='Mr. Rufflesworth').save()
Run Code Online (Sandbox Code Playgroud)
如果我进行类似的查询Animal.objects.all(),我最终得到两个Animal实例,而不是实例Person和实例Dog.有没有办法确定哪个实例属于哪种类型?
仅供参考:我已经尝试过这样做了......
isinstance(Animal.objects.get(name='Dave'),Person) # <-- Returns false!
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.