Django模型继承和ch类型

2024-05-16 22:09:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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,我知道传入的查询是机器模型的子模型,但我也想知道它是汽车子模型。


Tags: name模型机器abstracttruemodelmodelsmachine
2条回答

我不确定我是否正确地理解了你的问题。如果要找出给定实例的类型,可以使用内置的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

只有在获取调用Car类的对象时,isinstance才起作用。 如果你做Machine.objects.all()然后想知道是否是一辆车,你可以做的是使用hasattr。比如:

o = Machine.objects.all()[0]
print(hasattr(o, 'car'))

相关问题 更多 >