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()
Run Code Online (Sandbox Code Playgroud)
我的问题是,我如何理解机器模型的类型.对于instamce,我知道传入的查询是Machine模型的子项,但我也想知道它是Car子模型.
Man*_*dan 20
我不确定我是否正确理解你的问题.如果您要查找给定实例的类型,可以使用内置type函数.
an_object = Car(name = "foo", speed = 80)
an_object.save()
type(an_object) # <class 'project.app.models.Car'>
Run Code Online (Sandbox Code Playgroud)
或者,如果您想检查是否an_object是Car您可以使用的实例isinstance.
isinstance(an_object, Car) # True
Run Code Online (Sandbox Code Playgroud)
仅当您获取调用Car类的对象时,isinstance才起作用。如果您执行Machine.objects.all(),然后又想知道它是否是汽车,则可以使用hasattr。喜欢:
o = Machine.objects.all()[0]
print(hasattr(o, 'car'))
Run Code Online (Sandbox Code Playgroud)