Python 如何在django中继承对象?

Python 如何在django中继承对象?,python,django,inheritance,Python,Django,Inheritance,有关于如何在django中继承对象的链接或教程吗?让我们假设我有一辆车作为父母,一辆车和一辆卡车给它的孩子 如果可能,是否在models.py中完成? 它是如何工作的 谢谢…因为Django使用Python,所以正常的Python继承工作正常。有关继承模型的更多信息,请参阅Django文档中关于模型的部分,特别是关于。由于Django使用Python,所以正常的Python继承是有效的。有关继承模型的更多信息,请参阅关于模型的Django文档,特别是关于与python继承完全相同的部分 clas

有关于如何在django中继承对象的链接或教程吗?让我们假设我有一辆车作为父母,一辆车和一辆卡车给它的孩子

如果可能,是否在models.py中完成? 它是如何工作的


谢谢…

因为Django使用Python,所以正常的Python继承工作正常。有关继承模型的更多信息,请参阅Django文档中关于模型的部分,特别是关于。

由于Django使用Python,所以正常的Python继承是有效的。有关继承模型的更多信息,请参阅关于模型的Django文档,特别是关于与python继承完全相同的部分

class Vehicle(Model):
    name = models.TextField()

class Car(Vehicle):
    passengers = PositiveIntegerField()

class Truck(Vehicle):
    tonnage = FloatField()

>>> Car.objects.create(name='Beetle', passengers = 5)
<Car: name="Beetle",passengers=5>
>>> Truck.objects.create(name='Mack', tonnage=4.5)
<Truck: name="Mack,tonnage=4.5>
>>> Vehicle.objects.all()
[<Vehicle: name="Beetle">,<Vehicle: name="Mack>]
>>> v = Vehicle.objects.get(name='Beetle')
>>> (bool(v.car), bool(v.truck))
(True, False)
>>> v.car
<Car: name="Beetle",passengers=5>
>>> v.truck
None
等级车辆(型号):
name=models.TextField()
车辆类别:
乘客=PositiveIntegerField()
货车(车辆)类别:
吨位=浮场()
>>>Car.objects.create(name='甲壳虫',乘客=5)
>>>Truck.objects.create(name='Mack',tont=4.5)
]
>>>v=Vehicle.objects.get(name='甲壳虫')
>>>(汽车、卡车)
(对,错)
>>>汽车
>>>货车
没有一个

与python继承完全相同

class Vehicle(Model):
    name = models.TextField()

class Car(Vehicle):
    passengers = PositiveIntegerField()

class Truck(Vehicle):
    tonnage = FloatField()

>>> Car.objects.create(name='Beetle', passengers = 5)
<Car: name="Beetle",passengers=5>
>>> Truck.objects.create(name='Mack', tonnage=4.5)
<Truck: name="Mack,tonnage=4.5>
>>> Vehicle.objects.all()
[<Vehicle: name="Beetle">,<Vehicle: name="Mack>]
>>> v = Vehicle.objects.get(name='Beetle')
>>> (bool(v.car), bool(v.truck))
(True, False)
>>> v.car
<Car: name="Beetle",passengers=5>
>>> v.truck
None
等级车辆(型号):
name=models.TextField()
车辆类别:
乘客=PositiveIntegerField()
货车(车辆)类别:
吨位=浮场()
>>>Car.objects.create(name='甲壳虫',乘客=5)
>>>Truck.objects.create(name='Mack',tont=4.5)
]
>>>v=Vehicle.objects.get(name='甲壳虫')
>>>(汽车、卡车)
(对,错)
>>>汽车
>>>货车
没有一个

值得注意的是,虽然Django支持两种继承方法,但它们的行为都不是多态的,也就是说,如果使用抽象基类,并且使用多表继承,则无法对车辆模型进行查询并获取汽车实例,不能使用基类模型实例中的子类的行为


有很多代码和片段试图解决这个问题,但我觉得它们的集成不是很友好。

值得注意的是,虽然Django支持一些继承方法,但它们都没有多态性,也就是说,如果使用抽象基类,就无法对车辆模型进行查询并获取汽车实例,如果使用多表继承,则不能使用基类模型实例中的子类的行为


有很多和一些片段试图解决这个问题,但我觉得它们的集成不是很友好。

嗨,托马斯。您能否解释如何选择所有车辆,以及当我有一辆车时,如何知道它是一辆汽车(或卡车、摩托车……)。谢谢,你好,托马斯。您能否解释如何选择所有车辆,以及当我有一辆车时,如何知道它是一辆汽车(或卡车、摩托车……)。谢谢