【发布时间】:2018-07-11 18:44:44
【问题描述】:
我有这个自定义管理命令来删除一些旧记录。 QuerySets 很懒,所以我想知道是否有办法优化这段代码,因为目前--dry-run 模式下的数据库有四个命中:
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('--dry-run', action='store_true')
def handle(self, *args, **options):
threshold = timezone.now() - timezone.timedelta(5)
try:
if options['dry_run']:
queryset = Mointor.objects.filter(created__lt=threshold)
if queryset.exists():
msg = f'{queryset.count()} record(s) will be deleted, from {queryset.first().created} to {queryset.last().created}'
else:
msg = 'No records to delete'
else:
Monitor.objects.filter(created__lt=threshold).delete()
msg = 'OK'
except Exception as e:
raise CommandError(e)
self.stdout.write(msg)
【问题讨论】: