Django创建抽象模型类
在 Django 中,抽象基类(Abstract Base Classes) 用于定义一些可以在多个模型中共享的字段和方法,但它们本身不会在数据库中创建对应的表。这种方式有助于代码复用和保持模型的 DRY(Don’t Repeat Yourself)原则。
1.为什么使用抽象模型类?
- 避免代码重复:如果多个模型有共同的字段和方法,可以将它们放在一个抽象基类中。
- 逻辑封装:将通用逻辑封装在抽象基类中,使得模型更加简洁和易于维护。
- 易于扩展:未来添加新模型时,只需继承抽象基类即可获得共享的字段和方法。
2.如何定义抽象模型类?
使用 abstract=True 属性告诉 Django 这个模型是抽象的,不会创建数据库表。
from django.db import modelsclass TimeStampedModel(models.Model):created_at = models.DateTimeField(auto_now_add=True)updated_at = models.DateTimeField(auto_now=True)class Meta:abstract = True # 标记为抽象基类class MyModel(TimeStampedModel):name = models.CharField(max_length=100)description = models.TextField()
在这个例子中,TimeStampedModel 是一个抽象基类,包含了所有模型都需要的时间戳字段。MyModel 继承了 TimeStampedModel,自动获得了这些字段。