当我试图在Django中运行这个删除超过30天的访客帐户的定制命令时,为什么我收到错误消息"‘Datetime.timezone’没有属性‘Now’"?它可以在views.py中的其他地方工作,我在那里以同样的方式导入了它.由于命令位于不同的文件夹中,我是否必须以不同的方式导入它?(管理/命令/)
from django.core.management.base import BaseCommand
from datetime import timezone, timedelta
from gridsquid.models import User, Tile
DEFAULT_TILE_IMG_NAME = "defaultsquid.svg"
MAX_GUEST_ACCOUNT_DAYS = 30
class Command(BaseCommand):
def handle(self, *args, **options):
"""
Deletes all guest user accounts and their media if older than MAX_GUEST_ACCOUNT_DAYS
"""
# Get all guest accounts created before the limit
expired_guests_count = User.objects.filter(guest=True).filter(date_joined__lt=timezone.now()-timedelta(days=MAX_GUEST_ACCOUNT_DAYS)).count()
expired_guests = User.objects.filter(guest=True).filter(date_joined__lt=timezone.now()-timedelta(days=MAX_GUEST_ACCOUNT_DAYS))
for guest in expired_guests:
tiles = Tile.objects.select_related("user").filter(user=guest).all()
for tile in tiles:
# Delete image if not default image
if DEFAULT_TILE_IMG_NAME not in tile.image.url:
tile.image.delete()
# Delete audio file if there is one
if tile.audio is not None:
tile.audio.delete()
# Delete guest account
guest.delete()