Can I create classes that inherit Model classes in Django?

Yes, you can, and that is the correct way to separate extra custom logic, while still having access to specific model methods like initializer, filters, getters and save().But you need to consult the documentation; Django automatically computes some model-related information like table name and other pointers to it. Unless you specific set it as a proxy model, you can get “DatabaseError: no such table: yourmodule_yourclass”. I tried to fix this by manually specifying the table name (db_table property in Meta class), but then I got “DatabaseError: no such column: mymodule_mymodel.mymodel_ptr_id”.

Every child of a model class, no matter the level of inheritance, must have proxy = True in an inner Meta class. The correct way is like this:

from django.db import models
 
class Vehicle(models.Model):
    tires_presure = models.FloatField()
 
class ExtraLogicClass_Car(Vehicle):
    class Meta(object):
        proxy = True
 
    def pump_and_save(self):
        self.tires_presure = 0.4
        self.save()
 
class MoreExtraLogicClass_RaceCar(ExtraLogicClass_Car):
    class Meta(object):
        proxy = True
 
    def pump_and_save(self):
        self.tires_presure = 0.9
        self.save()
 
    def get_to_pits(self):
        self.in_pits = True