在Django中,你可以通过继承来创建一个新的模型,这个新模型将继承基类的所有字段和方法。这种方式可以让你在多个模型中共享公共的字段和方法,从而减少重复代码,提高代码的可维护性。
以下是一个简单的例子,演示了如何在Django中使用模型继承:
from django.db import models
# 定义一个基础模型,包含一些公共字段
class CommonInfo(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True # 设置为抽象基类,不会在数据库中创建表
# 定义一个具体的模型,继承自CommonInfo,并添加自己特有的字段
class ConcreteModel(CommonInfo):
name = models.CharField(max_length=100)
description = models.TextField()
# 可以添加自定义的方法
def my_custom_method(self):
# 实现一些业务逻辑
pass
在这个例子中,CommonInfo
是一个抽象的基类(通过设置 Meta
类的 abstract
属性为 True
来定义),它包含了两个字段:created_at
和 updated_at
。ConcreteModel
继承自 CommonInfo
,并添加了 name
和 description
字段。
抽象基类不会在数据库中创建表,只能用作继承的基础。如果你想要在数据库中创建具体的表,那么该模型(在这个例子中是 ConcreteModel
)必须不是抽象的,即不需要设置 Meta
类的 abstract
属性,或者显式地设置为 False
。