當你想將一些共有字段放進一個 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 模型一樣使用,不會生成一張數據表或者擁有一個管理器,并且不能實例化或者直接儲存。