Python GAE中的属性XXXX不是多行异常

3 投票
1 回答
2114 浏览
提问于 2025-04-15 18:13

我有一个简单的模型对象,里面有

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到底在哪里,从这些信息中,你就可以找到问题所在并进行调试。

撰写回答