2024-06-28 19:39:22 发布
网友
有没有一种方法可以为中的每个模型都有一个date_created和date_modified字段模特儿。派伊?你知道吗
date_created
date_modified
我想为每个正在创建的表设置这两个字段,这样我就可以知道何时创建或更新一行。你知道吗
但我不想让他们出现在我的照片里型号.py专门针对每种型号。你知道吗
有办法吗?你知道吗
例如,您可以定义一个抽象超级模型。比如:
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将自动更新。你知道吗
auto_now_add=True
auto_now
然后你可以给它分类。例如,对于名为SomeModel的模型:
SomeModel
class SomeModel(AppModel): name = models.CharField(max_length=128)
使模型abstract = True变得相当重要(它仍然可以在不使其抽象的情况下工作,但是它会使数据库变得非常混乱和低效)。通过指定this is abstract,它将向从该模型继承的每个模型添加两列。如果不将其抽象化,Django将构造一个新表,但通常这会降低查询的效率。你知道吗
abstract = True
因为您在这里向(可能是大量的)模型添加列,所以这将需要迁移,以便将列添加到数据库级别。如果应用程序中已经存储了数据,则需要找到一种方法来解析已经存在的行的列(例如,将其设置为NOW(),或设置为时间的开头)。你知道吗
NOW()
例如,您可以定义一个抽象超级模型。比如:
这里我们使用
auto_now_add=True
和auto_now
,这些参数甚至可以确保在创建对象时date_created
自动设置为时间戳,并且在更新数据库中的对象时date_modified
将自动更新。你知道吗然后你可以给它分类。例如,对于名为
SomeModel
的模型:使模型
abstract = True
变得相当重要(它仍然可以在不使其抽象的情况下工作,但是它会使数据库变得非常混乱和低效)。通过指定this is abstract,它将向从该模型继承的每个模型添加两列。如果不将其抽象化,Django将构造一个新表,但通常这会降低查询的效率。你知道吗因为您在这里向(可能是大量的)模型添加列,所以这将需要迁移,以便将列添加到数据库级别。如果应用程序中已经存储了数据,则需要找到一种方法来解析已经存在的行的列(例如,将其设置为
NOW()
,或设置为时间的开头)。你知道吗相关问题 更多 >
编程相关推荐