我已经被这个错误困住了很长一段时间,而我却无法弄清楚这意味着什么。当我尝试将对象保存到我的mysql数据库时,就会发生这种情况。有什么想法吗?
感谢您的帮助!
答案 0 :(得分:25)
刚遇到同样的问题并解决了它。我实例化了一个这样的表格:
data = {'date' : datetime.now} #this is the problem
form = MyForm(data)
该表格稍后保存,django试图在模型中设置'date'。但是datetime.now显然是指一个函数而不是一个日期。我想做的是 datetime.now()
也许这有助于任何人在将来遇到这种情况。
答案 1 :(得分:7)
这可能意味着Python正在尝试执行期望某种数据类型(bool,string,int等)的代码,但提供了另一种不正确的数据类型。
答案 2 :(得分:1)
在我的情况下,当我使用“time”库将日期字符串转换为datetime对象时出现。我只使用“datetime.strptime”而不是“time.strptime”,问题就消失了。
答案 3 :(得分:0)
'到期'是这个领域
expiration = models.DateTimeField(default=7)
有错误的代码就是这个:
ex = timedelta(minutes=expiration)
authobj, created = cls.objects.update_or_create(
operator=operator,
defaults={'transport':transport,'token':cls.generate_key(40),'expiration':ex}
)
通过设置它(而不是timedelta,日期)来解决它
ex = datetime.now() + timedelta(minutes=expiration)
authobj, created = cls.objects.update_or_create(
operator=operator,
defaults={'transport':transport,'token':cls.generate_key(40),'expiration':ex}
)
答案 4 :(得分:0)
django中的日期时间验证程序位于以下文件中:
/path/to/project/venv/lib/python2.7/site-packages/django/utils/dateparse.py
或当前python解释器的site-packages中 看看那里看正则表达式。就我而言,解决问题的方法是:
ended=datetime.fromtimestamp(time.time())
other=datetime.fromtimestamp(time.time())
# in the model:
ended = models.DateTimeField(blank=True, null=True) # or
other = models.DateTimeField(auto_now_add=False, blank=True)
两个都在工作。
答案 5 :(得分:-1)
str(yourvar)
您可以将变量转换为字符串。