如何从现有的基本模型实例创建继承的 django 模型实例?

Rez*_*adi 3 django django-models django-inheritance

我有两个像这样的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()
    serves_pizza = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)

我之前创建了一个Place实例,如下所示:

sixth_ave_street_vendor = Place(name='Bobby Hotdogs', address='6th Ave')
sixth_ave_street_vendor.save()
Run Code Online (Sandbox Code Playgroud)

现在鲍比已经将他的街头小贩升级为一家餐厅。我怎样才能在我的代码中做到这一点?为什么此代码不起作用:

sixth_ave_restaurant = Restaurant(place=sixth_ave_street_vendor,
                                  serves_hot_dogs=True,
                                  serves_pizza=True)
sixth_ave_restaurant.save()
Run Code Online (Sandbox Code Playgroud)

Rez*_*adi 5

这是我的解决方法:

sixth_ave_restaurant = Restaurant(place_ptr=sixth_ave_street_vendor,
                                  serves_hot_dogs=True,
                                  serves_pizza=True)
sixth_ave_restaurant.save_base(raw=True)
Run Code Online (Sandbox Code Playgroud)

如果你想用 做其他事情sixth_ave_restaurant,你应该再次获取它,因为它还id没有被分配,因为它在正常之后被分配save():

sixth_ave_restaurant = Restaurant.objects.get(id=sixth_ave_street_vendor.id)
Run Code Online (Sandbox Code Playgroud)