Skip to main content
 首页 » 编程设计

python之使用 Django ORM,遍历表记录,测试它们并在需要时删除记录

2024年08月22日28youxin

您将如何使用 Django ORM 遍历一个表,并测试日期时间字段以查看它们是否存在 8 天,如果为真则将其删除。

# models.py 
 
from django.db import models 
 
class Tweet(models.Model): 
    tweet_id = models.Charfield() 
    tweet_date = models.DatetimeField() 

# tasks.py 
from celery import shared_task 
from datetime import datetime, timedelta 
 
@shared_task(name='cleanup') 
def cleanup(): 
    tweets = MyModel.objects.all() 
    for tweet.tweet_date in tweets: 
        if tweets.tweet_date <= datetime.now() - timedelta(days=8): 
        # remove this record from the table 

请您参考如下方法:

您可以使用 lte 直接查询数据库中超过 8 天的 tweets 并删除生成的 tweets。无需迭代结果然后单独删除所有结果。

@shared_task(name='cleanup') 
def cleanup(): 
    # filter and delete more than 8 days old tweets 
    Tweet.objects.filter(tweet_date__lte=datetime.now()-timedelta(days=8)).delete()