当你想将一些共有字段放进一个 model 的时候,就可以用到抽象化类。
编写完基类之后,在 Meta 类中设置 abstract=True ,这个模型就不会被用来创建任何数据表。它可以被其他 model 用作基类,它的字段将被加入那些子类中。
注意:抽象基类和它的子类不能有相同的字段名,否则将会出现 error(并且 Django 将抛出一个 exception)。
一个例子:
from django.db import models
class CommonInfo(models.Model):
name = models.CharField(max_length=100)
age = models.PositiveIntegerField()
class Meta:
# 设置为抽象基类
abstract = True
class Student(CommonInfo):
home_group = models.CharField(max_length=5)
Student 模型将有三个字段:name, age 和 home_group。CommonInfo 模型无法像一般的 Django 模型一样使用,不会生成一张数据表或者拥有一个管理器,并且不能实例化或者直接储存。