Django模型继承:使用现有的超类创建子类
我正在使用,想知道如何从超类的实例创建继承的类型 使用文档中给出的示例:Django模型继承:使用现有的超类创建子类,django,inheritance,model,Django,Inheritance,Model,我正在使用,想知道如何从超类的实例创建继承的类型 使用文档中给出的示例: 上课地点(models.Model): name=models.CharField(最大长度=50) 地址=models.CharField(最大长度=80) 高级餐厅(地点): 供应热狗=models.BooleanField() serves_pizza=models.BooleanField() 现在,当您创建一个餐厅时,您会自动创建一个场所,这很好,而且是我期望和想要的行为 但是如果我做了一个地方,然后决定转换成
上课地点(models.Model):
name=models.CharField(最大长度=50)
地址=models.CharField(最大长度=80)
高级餐厅(地点):
供应热狗=models.BooleanField()
serves_pizza=models.BooleanField()
现在,当您创建一个餐厅
时,您会自动创建一个场所
,这很好,而且是我期望和想要的行为
但是如果我做了一个
地方
,然后决定转换成一种特定类型(比如餐厅
)。如何使用现有的位置创建一个餐厅
?多表继承只是位置和餐厅之间的OneToOneField
关系
place = Place.objects.get(id=1)
# Create a restaurant using existing Place
restaurant = Resturant(place_ptr=place)
restaurant.save()
这将导致restaurant.name被清空。因为restaurant.save()将更新名称为“”的位置(因为restaurant=restaurant())。。。一定有更好的方法…你应该添加餐厅。更新(地点),看。好的,secator的答案和jpic的添加相结合就可以了…可能是我看到的问题和答案的重复,但我很困惑,因为我认为这个问题与身份验证有关(因为用户更像是一个特殊的对象)然而,我对你的重复评论投了更高的票……所指的问题是关于用户的,这可能会让人困惑。我发现这个地方和餐馆的例子(从Django文档中偷来)更清楚,更像我的问题……但基本上是相同的问题。请参阅
place = Place.objects.get(id=1)
# Create a restaurant using existing Place
place.__class__ = Restaurant
place.save()
restaurant = place