在django中自动更改日期字段
我有两个日期字段,我想自动更新日期 当你阅读我的代码时,你会了解更多。 在我自己更新更新的字段之前,这些代码不会起作用 如何使其自动更新自身(更新的字段)在django中自动更改日期字段,django,django-models,Django,Django Models,我有两个日期字段,我想自动更新日期 当你阅读我的代码时,你会了解更多。 在我自己更新更新的字段之前,这些代码不会起作用 如何使其自动更新自身(更新的字段) STATUS_CHOICES = ( ('P', 'Paid'), ('U', 'UNPAID'), ) status = models.CharField( max_length=1, choices=STATUS_CHOICES) updated = models.DateTimeField(default=datetime.n
STATUS_CHOICES = (
('P', 'Paid'),
('U', 'UNPAID'),
)
status = models.CharField(
max_length=1, choices=STATUS_CHOICES)
updated = models.DateTimeField(default=datetime.now() )
expiry = models.DateTimeField(default=datetime.now() + timedelta(days=30) )
def save(self):
if(self.expiry >= self.updated):
self.status = default = "P"
else:
self.status = default = "U"
self.expiry = default=self.updated+timedelta(days=1)
super(Users, self).save()
DateTimeField
有一个属性,该属性将在每次保存对象时将字段设置为当前日期
主要问题是什么事件应该触发保存操作。例如,您可以改进视图,以便每次有人访问页面时,您的模型都会更新为所需的DateTimeField。另一方面,您可能希望在计划的基础上实现这一点,因此您应该使用类似于或的选项。在您的情况下,您有两种选择
到期
字段,则它可以是计算的属性
datetime.now()的直接结果作为datetime字段的默认值。这对你来说是一种误导,与你想要实现的目标不一样<代码>日期时间。现在
将在导入时(服务器启动时)执行,并将保持不变,直到下次重新启动。
如果希望默认值是创建记录的准确时间,则default
值需要是一个函数(每次都会执行),而不是函数的结果。
这意味着updated
需要datetime文件(默认值=datetime.now)
(不带括号)
这个逻辑更像是一个名为created\u at
或date\u created
而不是updated
的字段,但这是您的逻辑。您所说的“自动”是什么意思?您希望此代码按计划执行吗?@d2718nis否在我打开用户页面并自行更新日期(更新的字段)之前,这些代码不会工作。我想自动这样做,所以如果今天是21-2,一个月后是21-3,它会自动改变状态(取决于到期日),直到我手动更新文件,它才改变。看起来我被迫使用芹菜。谢谢你,不客气。如果这个答案有用,别忘了检查它是否正确。谢谢