代码
在 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')