gpt4 book ai didi

python - Django 每个模型都必须有一个 date_created 和 date_modified 字段

转载 作者:行者123 更新时间:2023-11-29 05:04:29 26 4
gpt4 key购买 nike

有没有办法让 models.py 中的每个模型都有一个 date_createddate_modified 字段?

我想为每个正在创建的表创建这两个字段,以便我能够知道何时创建或更新了一行。

但我不想在我的 models.py 中专门为每个模型显示它们。

有办法吗?

最佳答案

例如,您可以定义一个抽象 super 模型。喜欢:

class <b>AppModel</b>(models.Model):
<b>date_created</b> = models.DateTimeField(auto_now_add=True)
<b>date_modified</b> = models.DateTimeField(auto_now=True)

class Meta:
<b>abstract = True</b>

这里我们使用auto_now_add=Trueauto_now,这些参数甚至会确保date_created自动设置为对象创建时的时间戳已创建,date_modified 将在您更新数据库中的对象时自动更新。

然后你可以继承它。例如,对于名为 SomeModel 的模型:

class SomeModel<b>(AppModel)</b>:
name = models.CharField(max_length=128)

使模型 abstract = True 相当重要(它仍然可以在不抽象的情况下工作,但它会使数据库非常困惑且效率低下)。通过指定这是抽象的,它会将两列添加到继承自该模型的每个模型。如果您不将其抽象化,Django 将构造一个新表,但通常这会降低查询效率。

由于您在此处将列添加到(可能是大量的)模型,这将需要将列添加到数据库级别的迁移。如果应用程序中已经存储了数据,您将需要找到一种方法来解析已存在的行的列(例如将其设置为 NOW(),或设置为时间的开始).

关于python - Django 每个模型都必须有一个 date_created 和 date_modified 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51231534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com