Skip to main content
 首页 » 编程设计

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

2024年11月01日25daizhj

在我的 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())