为什么Django在多任务继承中隐式创建父类型的对象?

2024-09-29 01:29:36 发布

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

我试图理解django中的多表继承,并使用来自官方django docs的代码示例:

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似乎在创建餐厅对象时隐式创建了一个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

有人能解释一下发生了什么事吗


Tags: djangofalsedefaultobjectsmodelscountplaceall