首页 > 解决方案 > 为什么 Django 在多表继承中隐式创建类型为 parent 的对象?

问题描述

我正在尝试了解 django 中的多表继承,并使用官方django 文档中的代码示例:

class Place(models.Model):
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=80)

class Restaurant(Place):
    serves_hot_dogs = models.BooleanField(default=False)
    serves_pizza = models.BooleanField(default=False)

在 python 控制台中执行以下操作时。似乎 django 在创建 Restaurant 对象时隐式地创建了一个 Place 对象:

>>> Place.objects.all().count()
0

>>> Restaurant.objects.all().count()
0

>>> Restaurant.objects.create(serves_pizza=True)
<Restaurant: Restaurant object (1)>

>>> Place.objects.all().count()
1

>>> Restaurant.objects.all().count()
1

>>> Restaurant.objects.first() is Place.objects.first()
False

有人可以解释发生了什么吗?

标签: pythondjango

解决方案


推荐阅读