在 Django 中保存以前的日期并添加新日期
Saving previous date and adding new date in Django
我一直在开发一个应用程序,用户可以在其中添加他应该执行的任务,一旦添加了任务,他就可以更新进度。
在我的模型中,我有一个日期字段,用户应该在其中输入预计完成日期。
我的任务模型
"""Creating KRA Based on Institutional Objectives"""
class KraBasedOnIo(models.Model):
io = models.ForeignKey(InstitutionalObjectives, on_delete=models.CASCADE, related_name='kra_io')
kra_title = models.CharField(max_length = 200)
kra_description = models.TextField()
kra_target = models.CharField(max_length=200)
kra_added_date = models.DateTimeField(auto_now_add=True)
estimated_date = models.????
在更新进度时,如果用户想延长他的时间线,我正在寻找一个选项,我可以在其中保存他当前的预计完成日期并添加新日期。
当我显示他的进度时,我想在模板中显示他的定义的完成日期以及延长的完成日期。
我已经尝试使用 model.JSONField() 进行变通,但无法到达那里。
没有 ListField 或 DictionaryField 那么有什么更好的解决方案呢?
保持简单并创建两个单独的字段:
class KraBasedOnIo(models.Model):
# ...
estimated_completion_date = models.DateTimeField(null=True, blank=True)
extended_completion_date = models.DateTimeField(null=True, blank=True)
如果您需要跟踪所有完成日期的变化,我建议您创建一个新模型
class CompletionDate(models.Model):
# ...
kra = models.ForeignKey(KraBasedOnIo, related_name='completion_dates', on_delete=models.CASCADE)
estimated_date = models.DateTimeField(auto_now_add=True)
然后像这样获取 KraBasedOnIo 实例的最后完成日期:
my_last_completion_date = KraBasedOnIo.completion_dates.last()
所以我会使用库 django-simple-history 来跟踪该字段的不同更新。
"""Creating KRA Based on Institutional Objectives"""
class KraBasedOnIo(models.Model):
io = models.ForeignKey(InstitutionalObjectives, on_delete=models.CASCADE, related_name='kra_io')
kra_title = models.CharField(max_length = 200)
kra_description = models.TextField()
kra_target = models.CharField(max_length=200)
kra_added_date = models.DateTimeField(auto_now_add=True)
estimated_date = models.DateTimeField(default=timezone.now)
history = HistoricalRecords()
然后在您的视图中,您可以通过执行以下操作来查看不同的版本:
for record in kra_based_on_info.history.all():
print(record)
我一直在开发一个应用程序,用户可以在其中添加他应该执行的任务,一旦添加了任务,他就可以更新进度。
在我的模型中,我有一个日期字段,用户应该在其中输入预计完成日期。
我的任务模型
"""Creating KRA Based on Institutional Objectives"""
class KraBasedOnIo(models.Model):
io = models.ForeignKey(InstitutionalObjectives, on_delete=models.CASCADE, related_name='kra_io')
kra_title = models.CharField(max_length = 200)
kra_description = models.TextField()
kra_target = models.CharField(max_length=200)
kra_added_date = models.DateTimeField(auto_now_add=True)
estimated_date = models.????
在更新进度时,如果用户想延长他的时间线,我正在寻找一个选项,我可以在其中保存他当前的预计完成日期并添加新日期。
当我显示他的进度时,我想在模板中显示他的定义的完成日期以及延长的完成日期。
我已经尝试使用 model.JSONField() 进行变通,但无法到达那里。
没有 ListField 或 DictionaryField 那么有什么更好的解决方案呢?
保持简单并创建两个单独的字段:
class KraBasedOnIo(models.Model):
# ...
estimated_completion_date = models.DateTimeField(null=True, blank=True)
extended_completion_date = models.DateTimeField(null=True, blank=True)
如果您需要跟踪所有完成日期的变化,我建议您创建一个新模型
class CompletionDate(models.Model):
# ...
kra = models.ForeignKey(KraBasedOnIo, related_name='completion_dates', on_delete=models.CASCADE)
estimated_date = models.DateTimeField(auto_now_add=True)
然后像这样获取 KraBasedOnIo 实例的最后完成日期:
my_last_completion_date = KraBasedOnIo.completion_dates.last()
所以我会使用库 django-simple-history 来跟踪该字段的不同更新。
"""Creating KRA Based on Institutional Objectives"""
class KraBasedOnIo(models.Model):
io = models.ForeignKey(InstitutionalObjectives, on_delete=models.CASCADE, related_name='kra_io')
kra_title = models.CharField(max_length = 200)
kra_description = models.TextField()
kra_target = models.CharField(max_length=200)
kra_added_date = models.DateTimeField(auto_now_add=True)
estimated_date = models.DateTimeField(default=timezone.now)
history = HistoricalRecords()
然后在您的视图中,您可以通过执行以下操作来查看不同的版本:
for record in kra_based_on_info.history.all():
print(record)