python - django 在一个字段中多个更新日期

标签 python django datetime

在 Django 模型中创建“更新历史记录”字段以便我可以跟踪多个更新日期的最佳方法是什么?

我可以使用last_updated = models.DateTimeField() 创建一个模型,然后让我的 View 将日期时间保存到其中,但是如果我想了解用户更新帖子的历史记录,而不仅仅是最更新的历史记录,该怎么办最近保存?

应该是 ManyToManyField 还是 CharField?

最佳答案

它根本不应该是一个字段。相反,创建一个模型,它将使用外键引用您的主模型:

class YourModel(models.Model):
    name = models.CharField(max_length=100)

class YourModelUpdateHistory(models.Model):
    your_model = models.ForeignKey('YourModel')
    updated = models.DateTimeField() 

这样您就可以为每个模型拥有多个日期,同时保持数据库正确规范化。它还允许您将来添加其他字段,其中包含有关每次更新的其他信息(例如谁更新了对象)。

每当您更新 YourModel 对象时,您都应该创建一个新的 YourModelUpdateHistory 对象。您甚至可以对其进行设置,以便自动完成,这要归功于 save() 方法(每次保存对象时 Django 都会调用该方法):

from django.utils import timezone

class YourModel(models.Model):
    name = models.CharField(max_length=100)

    def save(self, *args, **kwargs):
        super(YourModel, self).save(*args, **kwargs)
        YourModelUpdateHistory.objects.create(your_model=self, updated=timezone.now())

关于python - django 在一个字段中多个更新日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19232352/

相关文章:

python - 如何使用 Python basemap 更快地绘制地理定位的 RGB 数据

django - 如何在 django 中为每个用户创建单独的文件夹并让用户在该文件夹中上传文件?

Django 事务 : How to run extra code during rollback?

PHP 如果日期早于 X 天

python - 包含分类数据和数值数据的 Pandas 条形图

python - 检查具有不同属性的对象是否相等

python - macOS X 奇怪的 python

python - 为什么 Django 1.7 从 syncdb 迁移到 migrate?

mysql - 查看 24 小时内的时间戳差异输出

excel - Spark(Scala)解析时间戳格式为 ("dd-MMM-yy hh:mm:ss:SSSSSSSSS aa"的字段的问题)