例如,您可以定义
摘要
超模。比如:
class AppModel(models.Model):
date_created = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
我们用这个
auto_now_add=True
和
auto_now
,这些参数甚至可以确保
date_created
在创建对象时自动设置为时间戳,并且
date_modified
将在更新数据库中的对象时自动更新。
那你就可以把它分类。例如,对于名为
SomeModel
以下内容:
class SomeModel(AppModel):
name = models.CharField(max_length=128)
制作模型
abstract = True
是相当重要的(好吧,它仍然可以工作而不使其抽象,但它将使数据库相当混乱和效率较低)。通过指定这是抽象的,它将把两列添加到
每一个
从该模型继承的模型。如果不将其抽象化,django将构造一个新表,但这通常会降低查询的效率。
由于您在这里向(可能是大量的)模型添加列,这将需要一个将列添加到数据库级别的迁移。如果在应用程序中已经存储了数据,则需要找到一种方法来解决已经存在的行的列(例如将其设置为
NOW()
,或者直到时代的开始)。