StringListProperty限制为500个字符字符串(Google App Engine / Python)
看起来,StringListProperty这个东西每个字符串最多只能有500个字符,就像StringProperty一样...
有没有办法存储比这个更长的字符串呢?我不需要这些字符串被索引或者其他的功能。我想要的其实是一个“TextListProperty”,也就是列表里的每个字符串都可以是任意长度,而不是限制在500个字符以内。
我能创建这样的属性吗?或者你们这些专家能给我一些其他的建议吗?也许我应该用一个普通的列表,然后把它放在Blob字段里进行存取,类似这样的做法?我对Python和GAE还比较陌生,非常希望能得到一些建议,而不是花好几天时间去试错...谢谢!
2 个回答
4
亚历克斯早就回答过这个问题了,不过如果还有其他人遇到同样的问题,可以看看这里:
你只需要把 item_type
设置为 db.Text(就像提问者在评论中提到的那样)。
下面是一个简单的例子:
from google.appengine.ext import db
class LargeTextList(db.Model):
large_text_list = db.ListProperty(item_type=db.Text)
def post(self):
# get value from a POST request,
# split into list using some delimiter
# add to datastore
L = self.request.get('large_text_list').split() # your delimiter here
LTL = [db.Text(i) for i in L]
new = LargeTextList()
new.large_text_list = LTL
new.put()
def get(self):
# return one to make sure it's working
query = LargeTextList.all()
results = query.fetch(limit=1)
self.render('index.html',
{ 'results': results,
'title': 'LargeTextList Example',
})
2
你可以使用一个通用的 列表属性,并根据需要指定一个 item_type
(比如 str
、unicode
,或者其他类型)。