[英]How can I filter and update my Django model with created_at
I have two models我有两个模型
class Records(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
Approved = models.BooleanField(default=False)
Date = models.DateTimeField(default=datetime.now, blank=True)
class Request(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
Approved = models.BooleanField(default=False)
Date = models.DateTimeField(default=datetime.now, blank=True)
I want cron to update Record
every 1 minutes if Approved
in Request
is True
如果Request
中的Approved
为True
,我希望 cron 每 1 分钟更新一次Record
I tried this...我试过这个...
def user_request():
if Request.objects.exists():
check=Request.objects.get()
with transaction.atomic():
if check.Approved == True:
Records.objects.filter(user=check.user, Date=check.Date).update(Approved=True)
Request.objects.get().delete()
I dont understand why this logic wont work when this two model object was created at the same time and even when i confirm the datetime, the date, minute and second is the same.我不明白为什么当这两个 model object 同时创建时,即使我确认日期时间,日期、分钟和秒是相同的,这个逻辑也不起作用。
You need to specify which Request
you want to update.您需要指定要更新的Request
。
def user_request(req):
req_id = req.id
with transaction.atomic():
if req.Approved:
record = Records.objects.filter(user=check.user)
record.update(Approved=True)
req.delete()
return req_id
The method user_request
needs to be run against every request object. user_request
方法需要针对每个请求 object 运行。
An example for your CRON job:您的 CRON 作业示例:
from datetime import datetime
...
today_requests = Request.objects.filter(Date=datetime.today())
updated_requests = [user_request(req) for req in today_requests]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.