Кажется, что StringListProperty может только содержать строки до 500 символов каждый, точно так же, как StringProperty...
Существует ли способ сохранить более длинные строки, чем это? Мне не нужны они, чтобы быть индексированным или что-либо. То, в чем я нуждался бы, будет чем-то как "TextListProperty", где каждая строка в списке может быть любой длиной и не ограниченная 500 символами.
Я могу создать свойство как этот? Или можете Вы эксперты предлагать другой подход? Возможно, я должен использовать простой список и солить/не солить его в поле Blob или чем-то как этот? Я немного плохо знаком с Python и GAE, и я был бы очень признателен за некоторые указатели вместо того, чтобы провести взятые на пробу дни и ошибка... Спасибо!
Вы можете использовать общий ListProperty с item_type
, как вам требуется (str
, или unicode
, или что угодно).
Алекс уже давно ответил, но на случай, если кто-то еще придет с той же проблемой:
Вы просто сделаете item_type
равным db.Text (как OP упоминает в комментарии).
Вот простой пример:
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',
})