在 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/