class Machine(models.Model):
name= models.CharField( max_length=120)
class Meta:
abstract = True
class Car(Machine):
speed = models.IntegerField()
class Computer(Machine)
ram = models.IntegerField()
我的问题是,我如何理解机器型号的类型。对于instamce,我知道传入的查询是Machine模型的子项,但我也想知道它是Car子模型。
答案 0 :(得分:20)
我不确定我是否理解你的问题。 如果 您正在尝试查找给定实例的类型,则可以使用内置的type
函数。
an_object = Car(name = "foo", speed = 80)
an_object.save()
type(an_object) # <class 'project.app.models.Car'>
或者,如果您想检查an_object
是Car
的实例,可以使用isinstance
。
isinstance(an_object, Car) # True
答案 1 :(得分:4)
仅当您获取调用Car类的对象时,isinstance才会起作用。 如果你做Machine.objects.all()以后想知道是否是一辆汽车,你可以做的是使用hasattr。像:
o = Machine.objects.all()[0]
print(hasattr(o, 'car'))