Django“期望字符串或缓冲区”错误表示什么?

时间:2010-11-29 13:53:15

标签: django django-errors

我已经被这个错误困住了很长一段时间,而我却无法弄清楚这意味着什么。当我尝试将对象保存到我的mysql数据库时,就会发生这种情况。有什么想法吗?

感谢您的帮助!

6 个答案:

答案 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)

您可以将变量转换为字符串。