代码

在 models.py 中,代码如下:

from datetime import datetime

class MyModel(models.Model)
    ...
    temp1 = '2100-12-31'
    temp2 = datetime.strptime(temp1, '%Y-%m-%d')
    end_date = models.DateField(verbose_name='结束日期', blank=True, null=True, default=temp2)

在 admin.py 中,代码如下:

import datetime
...
str_time = datetime.datetime.now().strftime('%Y-%m-%d_%H.%M.%S')

报错

str_time = datetime.datetime.now().strftime('%Y-%m-%d_%H.%M.%S')
AttributeError: type object 'datetime.datetime' has no attribute 'datetime'

原因

一种是导入datetime类进行使用,一种是从datetime类导入datetime模块进行使用。两者不可同时调用,因为两者都叫做datetime。
感觉像是:在执行admin.py中的代码时,由于models.py中字段设置了default,导致会先执行一次models.py中datetime模块,后执行admin.py中的代码datetime.datetime就报错。

奇怪的地方

admin.py和models.py明明是两个文件,也出现了这个问题。

解决

修改 models.py 中的

from datetime import datetime
temp2 = datetime.strptime(temp1, '%Y-%m-%d')

import datetime
temp2 = datetime.datetime.strptime(temp1, '%Y-%m-%d')

参考

https://stackoverflow.com/questions/15707532/python-import-datetime-v-s-from-datetime-import-datetime

最后修改:2020 年 03 月 21 日 10 : 54 AM
如果觉得文章帮助了您,您可以随意赞赏。