django 类型对象“datetime.timezone”没有属性“now”

cyej8jka  于 2022-12-30  发布在  Go
关注(0)|答案(2)|浏览(185)

这一行代码正在接收AttributeError:第一个月
我不知道为什么。我正确地导入了包,如下所示:from django.utils import timezone
但它仍在投掷:
Attribute Error: type object 'datetime.timezone' has no attribute 'now'
型号

class Donaci(models.Model):
    creation_date = models.DateTimeField(auto_now_add=True, blank=True)
    message = models.CharField(max_length=300, null=True, blank=True)

    def whenpublished(self):
        now = timezone.now()
        
        diff = now - self.creation_date

        if diff.days == 0 and diff.seconds >= 0 and diff.seconds < 60:
            seconds= diff.seconds
            
            if seconds == 1:
                return str(seconds) +  "second ago"
            
            else:
                return str(seconds) + " seconds ago"

进口

from django.contrib.auth.models import AbstractUser
from django.contrib.auth import settings
from django.utils import timezone
from django.db import models
from datetime import *
wfypjpf4

wfypjpf41#

请使用此选项:

import datetime

而不是这样:

from datetime import *
cyvaqqii

cyvaqqii2#

答案是:

from django.utils import timezone
from datetime import *

首先从django.utils导入timezone,但是这被Python的datetime模块的 * import覆盖,该模块也有timezone(和许多其他东西)。
当你执行timezone.now()时,它使用的是Python的datetimetimezone对象,而不是django.utilstimezone对象,这就是为什么你会看到这个错误:

AttributeError: type object 'datetime.timezone' has no attribute 'now'

如果以相反的方式导入:

from datetime import *
from django.utils import timezone

timezone.now()将工作,因为timezone对象将被django.utilstimezone对象覆盖。

    • 建议**:不要进行星型导入,除非你知道它不会冲突。

相关问题