django - 使用 django 后台任务自动将数据库字段更新为 True
问题描述
我有一个具有字段的模型作业filled
。如果当前日期和时间大于或等于作业的结束日期和时间,filled
我想自动更新。True
创建作业时设置结束日期。我正在使用 Django 后台任务来检查数据库中的所有作业并始终重复该过程,但我无法让它工作。这是我的代码
模型.py
class Job(models.Model):
# title, description, requirements, job type etc.
end_date = models.DateTimeField()
current_date = models.DateTimeField(null=True, blank=True)
filled = models.BooleanField(default=False)
created_at = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.title
任务.py
@background(schedule=60)
def auto_mark_as_filled(job_id):
jobs = Job.objects.filter(pk=job_id, filled=False)
for job in jobs:
job.current_date = timezone.localtime(timezone.now())
if job.current_date >= job.end_date:
job.filled = True
job.save()
我正在从我的 forms.py 中调用该任务。当我创建一个新工作时,我会注册它。
表格.py
class CreateJobForm(forms.ModelForm):
# class meta fields widgets etc
def save(self, commit=True):
job = super(CreateJobForm, self).save(commit=False)
job.save()
auto_mark_as_filled(job.id, repeat=60, repeat_until=None) # right here, repeat every 60seconds
return job
但是当当前日期大于或等于结束日期时,什么都不会发生。我真的不知道我在做什么错任何帮助将不胜感激。
更新
所以我发现python manage.py process_tasks
需要运行命令以查看创建新任务后是否有新任务要运行。python manage.py process_tasks
每次在生产中创建新任务时在终端中手动运行是不对的。必须有一种方法来保持该命令在 te 服务器中运行。
解决方案
推荐阅读
- angular - 寻求在jspdf中使用动态数据为多页设置填充的解决方案
- node.js - 我如何在 node.js 中重定向
- docker - 为什么我的 Docker swarm 服务只复制到 3/5?
- html - 由样式化组件创建的类自动添加到另一个 div/组件。(云前)。在本地运行良好
- python-3.x - import psycopg2 : SystemError: _psycopg 的初始化在第二个 URL 命中引发未报告的异常\r 失败
- c# - 将光标置于所有文本框的末尾
- python - 在 Python 中找到任意函数的下确界/上确界以计算和绘制 darboux 和
- c# - 找不到任何可用的配置文件
- sql-server - 将 Outlook 电子邮件导出到 SQL(Vai ACCESS?)
- webapi - 在 Blazor 中,如何将图像加载到内存中以便 C# 可以访问它