Почему я получаю эту ошибку пользовательской команды Django: 'datetime.timezone' не имеет атрибута 'now'
Почему я получаю ошибку "'datetime.timezone' не имеет атрибута 'now'" при попытке запустить эту пользовательскую команду в Django, которая удаляет гостевые учетные записи старше 30 дней? Она работает в другом месте в views.py, куда я импортировал ее таким же образом. Должен ли я импортировать его по-другому, поскольку команда находится в другой папке? (management/commands/)
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()
from django.utils import timezone
Вам нужно импортировать его вот так, это doc
Измените импорт на следующий:
from django.utils import timezone
from datetime import timedelta
И это будет работать лучше. Django также использует datetime.