StringListProperty限制为500个字符字符串(Google App Engine / Python)

5 投票
2 回答
1186 浏览
提问于 2025-04-15 23:03

看起来,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(比如 strunicode,或者其他类型)。

撰写回答