我实际上想知道从django抽象类继承的模型类(元:abstract = True)与从诸如“对象”(而不是models.Model)继承的普通Python类之间的区别。
Django只会为的子类生成表
models.Model,因此前者…
class User(models.Model): first_name = models.CharField(max_length=255) def get_username(self): return self.username class meta: abstract = Trueclass Employee(User): title = models.CharField(max_length=255)
…将导致按照…的方式生成一个表
CREATE TABLE myapp_employee( id INT NOT NULL AUTO_INCREMENT, first_name VARCHAr(255) NOT NULL, title VARCHAr(255) NOT NULL, PRIMARY KEY (id));
后者
class User(object): first_name = models.CharField(max_length=255) def get_username(self): return self.usernameclass Employee(User): title = models.CharField(max_length=255)
…不会导致生成任何表格。
你可以使用多重继承执行类似的操作…
class User(object): first_name = models.CharField(max_length=255) def get_username(self): return self.usernameclass Employee(User, models.Model): title = models.CharField(max_length=255)
…这将创建一个表,但它将忽略
User类中定义的字段,因此你最终将得到一个这样的表…
CREATE TABLE myapp_employee( id INT NOT NULL AUTO_INCREMENT, title VARCHAr(255) NOT NULL, PRIMARY KEY (id));



