I read here that multi-table inheritance can cause performance issues, and instead explicit OneToOneField is recommended.
Here is my situation:
class Product(models.Model): title = models.CharField(max_length=200) description = models.TextField() price = models.DecimalField(decimal_places=2, max_digits=10) category = models.ForeignKey('Category', on_delete=models.CASCADE, blank=False) class Book(Product): publisher = models.CharField(max_length=50) author = models.CharField(max_length=50) isbn = models.CharField(max_length=50) class Shoes(Product): size = models.PositiveSmallIntegerField() colour = models.CharField(max_length=20, choices=[('black', 'Black'), ('white', 'White')]) I don't understand why would explicit OneToOneField bring performance gains, when multi-table inheritance is implemented in exactly the same way:
place_ptr = models.OneToOneField( Place, on_delete=models.CASCADE, parent_link=True, ) If this is true despite everything, I would like to know how could I alter my models so they use explicit OneToOneField. So, if I create a Book instance, Product.objects.all() should retrieve that instance of Book, too.