Python GAE中的属性XXXX不是多行异常
我有一个简单的模型对象,里面有
profilename = db.StringProperty()
当我得到一个字符串“Some More”,然后尝试
放入
这个模型时,它抛出了一个异常
属性 profilename 不能是多行的
空格是不是等同于换行符,还是我漏掉了什么?对于没有空格的单词字符串,它是
放入
的。
1 个回答
4
这个检查是在应用程序层面进行的,具体是在StringProperty.validate这个地方。你可以在你的SDK源代码中的ext/db/init.py文件里找到相关代码:
if not self.multiline and value and value.find('\n') != -1:
raise BadValueError('Property %s is not multi-line' % self.name)
所以,除非你传入的value
里真的包含了一个\n
,否则这个检查是不会被触发的。为了帮助你调试这个问题,可以在出问题的put
之前使用:
logging.info('value is: %r', value)
这样做后,你在日志中会看到什么呢?%r
格式说明符会显示你字符串的表示形式,这样你就能看到那个不该出现的\n
到底在哪里,从这些信息中,你就可以找到问题所在并进行调试。