Django每个模型必须有日期创建和日期修改字段

2024-06-28 19:39:22 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以为中的每个模型都有一个date_createddate_modified字段模特儿。派伊?你知道吗

我想为每个正在创建的表设置这两个字段,这样我就可以知道何时创建或更新一行。你知道吗

但我不想让他们出现在我的照片里型号.py专门针对每种型号。你知道吗

有办法吗?你知道吗


Tags: 方法py模型date照片modified型号created
1条回答
网友
1楼 · 发布于 2024-06-28 19:39:22

例如,您可以定义一个抽象超级模型。比如:

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=Trueauto_now,这些参数甚至可以确保在创建对象时date_created自动设置为时间戳,并且在更新数据库中的对象时date_modified将自动更新。你知道吗

然后你可以给它分类。例如,对于名为SomeModel的模型:

class SomeModel(AppModel):
    name = models.CharField(max_length=128)

使模型abstract = True变得相当重要(它仍然可以在不使其抽象的情况下工作,但是它会使数据库变得非常混乱和低效)。通过指定this is abstract,它将向从该模型继承的每个模型添加两列。如果不将其抽象化,Django将构造一个新表,但通常这会降低查询的效率。你知道吗

因为您在这里向(可能是大量的)模型添加列,所以这将需要迁移,以便将列添加到数据库级别。如果应用程序中已经存储了数据,则需要找到一种方法来解析已经存在的行的列(例如,将其设置为NOW(),或设置为时间的开头)。你知道吗

相关问题 更多 >