4

我有两个像这样的 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()

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

sixth_ave_street_vendor = Place(name='Bobby Hotdogs', address='6th Ave')
sixth_ave_street_vendor.save()

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

sixth_ave_restaurant = Restaurant(place=sixth_ave_street_vendor,
                                  serves_hot_dogs=True,
                                  serves_pizza=True)
sixth_ave_restaurant.save()
4

2 回答 2

4

这是我的解决方法:

sixth_ave_restaurant = Restaurant(place_ptr=sixth_ave_street_vendor,
                                  serves_hot_dogs=True,
                                  serves_pizza=True)
sixth_ave_restaurant.save_base(raw=True)

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

sixth_ave_restaurant = Restaurant.objects.get(id=sixth_ave_street_vendor.id)
于 2012-12-25T23:38:08.863 回答
3

您应该使用place_ptr而不是place.

restaurant = Restaurant.objects.create(place_ptr=sixth_ave_street_vendor,
                                       serves_hot_dogs=True, serves_pizza=True)
于 2012-12-25T22:56:32.800 回答