是否有关于如何在django中继承对象的链接或教程?让我们说我有一辆车作为父母,一辆汽车和一辆卡车为它的孩子。
如果有可能,是否在models.py中完成? 它是如何工作的?
感谢...
答案 0 :(得分:4)
与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
https://docs.djangoproject.com/en/dev/topics/db/models/#model-inheritance
答案 1 :(得分:1)
值得注意的是,虽然Django支持一些继承方法,但它们都没有以多态方式运行,也就是说,如果使用抽象基础,则无法对Vehicle模型进行查询并获取Car实例class,如果使用Multi表继承,则不能使用基类模型实例中子类的行为。
答案 2 :(得分:0)
由于Django使用Python,因此普通的Python继承可以正常工作。有关继承模型的更多信息,请参阅有关模型的Django文档,尤其是关于Model inheritance的部分。