您将如何使用 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()
