簡體   English   中英

如何使用 created_at 過濾和更新我的 Django model

[英]How can I filter and update my Django model with 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)

如果Request中的ApprovedTrue ,我希望 cron 每 1 分鍾更新一次Record

我試過這個...

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()

我不明白為什么當這兩個 model object 同時創建時,即使我確認日期時間,日期、分鍾和秒是相同的,這個邏輯也不起作用。

您需要指定要更新的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方法需要針對每個請求 object 運行。

您的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM