Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django model inheritance: Create a subclass using existing super class

I'm using multi-table-inheritance, and want to know how to create an inherited type from an instance of the superclass.

Using the example given in the documentation:

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() 

Now when you create a Restaurant, you automatically make a Place, which is fine, and the behaviour I expect and want.

But what if I make a Place, and later decide I want to convert to a specific type (like Restaurant). How do you create a Restaurant, using an existing Place?

like image 410
michel.iamit Avatar asked Mar 22 '12 12:03

michel.iamit


1 Answers

Multi-table inheritance is just OneToOneField relation between Place and Restaurant.

place = Place.objects.get(id=1)                 # Create a restaurant using existing Place    restaurant = Resturant(place_ptr=place) restaurant.save() 
like image 55
Mariusz Jamro Avatar answered Oct 11 '22 01:10

Mariusz Jamro