Как я могу фильтровать и обновлять мою модель Django с помощью created_at
У меня есть две модели
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)
Я хочу, чтобы cron обновлял Record
каждые 1 минуту, если Approved
в Request
будет True
Я попробовал это...
def deposit():
if Deposit_Request.objects.exists():
check=Deposit_Request.objects.get()
with transaction.atomic():
if check.Approved == True:
Deposit_Records.objects.filter(user=check.user, Date=check.Date).update(Approved=True)
Deposit_Request.objects.get().delete()
Я не понимаю, почему эта логика не работает, когда эти два объекта модели были созданы в одно и то же время, и даже когда я подтверждаю datetime, дата, минута и секунда одинаковы.
Вам необходимо указать, какие 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
Метод user_request
должен выполняться для каждого объекта запроса.
Пример для вашего задания CRON:
from datetime import datetime
...
today_requests = list(Request.objects.filter(Date=datetime.today()))
updated_requests = [user_request(req) for req in today_requests]