使用Django ORM,迭代表记录,测试它们,并在需要时删除记录



如何使用Django ORM遍历一个表,并测试datetime字段是否为8天前的,如果为True则删除它们。

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

相关内容

  • 没有找到相关文章

最新更新