当一个抽象基类被创建的时候, Django 把基类内部定义的 Meta 类作为一个属性使其可用。如果子类没有声明自己的 Meta 类, 他将会继承父类的 Meta。
如果子类想要扩展父类的 Meta类,可以这样操作:
from django.db import models
class CommonInfo(models.Model):
name = models.CharField(max_length=100)
age = models.PositiveIntegerField()
class Meta:
abstract = True
# 排序依据
ordering = ['name']
class Student(CommonInfo):
home_group = models.CharField(max_length=5)
class Meta(CommonInfo.Meta):
# 设置 Student 对象在数据库中的表的名称为 student_info
db_table = 'student_info'
def __str__(self):
return self.name
注意:继承时,Django 会对抽象基类的 Meta 类做一个调整:会把子类的 abstract=False。这意味着抽象基类的子类本身不会自动变成抽象类。