在Django中,模型继承可以通过使用抽象基类或多表继承来实现。
from django.db import models
class BaseModel(models.Model):
name = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
abstract = True
class ChildModel(BaseModel):
description = models.TextField()
在上面的示例中,BaseModel
是一个抽象基类,它定义了name
和created_at
字段。ChildModel
继承了BaseModel
,并且还定义了一个description
字段。当迁移时,BaseModel
不会被创建为数据库表,它只是被用作其他模型的基类。
from django.db import models
class BaseModel(models.Model):
name = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
class ChildModel(BaseModel):
description = models.TextField()
class Meta:
db_table = 'child_model'
在这个示例中,ChildModel
继承了BaseModel
,并且定义了一个description
字段。当迁移时,Django会在数据库中创建两个表,一个是BaseModel
的表,另一个是ChildModel
的表。两个表之间通过外键关联起来,ChildModel
中会有一个指向BaseModel
的外键字段。
无论是使用抽象基类还是多表继承,都可以实现模型的继承功能。选择哪种方式取决于具体的需求和设计。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。