根据天数更新现有数据 - DJANGO
Update existing data based on days - DJANGO
我的项目有一个问题,无法根据时间更新列字段。也就是说,我将通过表单插入数据并填写日期字段,我希望在几天内更新特定字段。例如,如果自从我将表格插入数据库后 10 天过去了,我希望在 11 日将未结订单的状态更改为延迟。我试图覆盖保存方法,但它只在我编辑表单并保存或插入表单时有效,但这不是我的目标。
models.py:
class Order(models.Model):
name = models.CharField(max_lenght = 100)
data_start = models.DateField(default=date.today)
status = models.Charfield(
max_length=50,
default='Open',
choices=(
('Open', 'Open'),
('Late', 'Late'),
)
def save(self, *args, **kwargs):
days_for_late = datetime.timedelta(days=15)
late = self.data_start + days_for_late
today = datetime.date.today()
if today > late:
self.status = 'Late'
super(Order, self).save(*args, **kwargs)
我在这个阶段停留了好几天,在网站上阅读了很多类似的问题,但我无法解决。大多数人都在谈论覆盖保存方法,这对我的问题不起作用
您尝试执行的操作称为 异步 task/function/job - 运行 在您的服务器上运行而无需用户交互的功能。
Django version < 3.0 无法自行处理此类功能。甚至版本 > 3.0 都 not 完全涵盖异步任务。所以你有两个选项可以适应你的代码
如果你会有更多的异步函数,尝试使用与 Django 兼容的异步库之一,比如 Celery. Celery has very nice tutorial on how to easily make your own async task. Or you can use this answer from similar
另一个选项可能是 crontab - a scheduler for execution of files in linux. Just create custom manage.py command 里面有你的更新状态脚本,运行 它在 crontab 中,启用了你的虚拟环境
我的项目有一个问题,无法根据时间更新列字段。也就是说,我将通过表单插入数据并填写日期字段,我希望在几天内更新特定字段。例如,如果自从我将表格插入数据库后 10 天过去了,我希望在 11 日将未结订单的状态更改为延迟。我试图覆盖保存方法,但它只在我编辑表单并保存或插入表单时有效,但这不是我的目标。
models.py:
class Order(models.Model):
name = models.CharField(max_lenght = 100)
data_start = models.DateField(default=date.today)
status = models.Charfield(
max_length=50,
default='Open',
choices=(
('Open', 'Open'),
('Late', 'Late'),
)
def save(self, *args, **kwargs):
days_for_late = datetime.timedelta(days=15)
late = self.data_start + days_for_late
today = datetime.date.today()
if today > late:
self.status = 'Late'
super(Order, self).save(*args, **kwargs)
我在这个阶段停留了好几天,在网站上阅读了很多类似的问题,但我无法解决。大多数人都在谈论覆盖保存方法,这对我的问题不起作用
您尝试执行的操作称为 异步 task/function/job - 运行 在您的服务器上运行而无需用户交互的功能。
Django version < 3.0 无法自行处理此类功能。甚至版本 > 3.0 都 not 完全涵盖异步任务。所以你有两个选项可以适应你的代码
如果你会有更多的异步函数,尝试使用与 Django 兼容的异步库之一,比如 Celery. Celery has very nice tutorial on how to easily make your own async task. Or you can use this answer from similar
另一个选项可能是 crontab - a scheduler for execution of files in linux. Just create custom manage.py command 里面有你的更新状态脚本,运行 它在 crontab 中,启用了你的虚拟环境