【问题标题】:Django model inheritance and type checkDjango 模型继承和类型检查
【发布时间】:2010-08-09 07:16:09
【问题描述】:
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()

我的问题是,我如何理解机器模型是什么类型。例如,我知道传入的查询是 Machine 模型的子模型,但我也想知道它是 Car 子模型。

【问题讨论】:

    标签: python django


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      isinstance 仅在您获取调用 Car 类的对象时才有效。 如果您执行 Machine.objects.all() 并且稍后想知道是否是汽车,您可以做的是使用 hasattr。喜欢:

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

      【讨论】:

        猜你喜欢
        • 2013-04-20
        • 2015-03-05
        • 2010-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        相关资源
        最近更新 更多