Расширяя предложение Адама, вы можете протолкнуть травление в свой собственный класс недвижимости. Вот пример, который обрабатывает проверку и преобразование предоставленного списка в тип Blob и из него. Предоставленный список может содержать любой тип данных или комбинацию типов данных, поскольку он просто хранит стандартный список Python.
import pickle
class GenericListProperty(db.Property):
data_type = db.Blob
def validate(self, value):
if type(value) is not list:
raise db.BadValueError('Property %s must be a list, not %s.' % (self.name, type(value), value))
return value
def get_value_for_datastore(self, model_instance):
return db.Blob(pickle.dumps(getattr(model_instance,self.name)))
def make_value_from_datastore(self, value):
return pickle.loads(value)
Вы используете его как любое другое свойство.
class ModelWithAGenericList(db.Model):
mylist = GenericListProperty()
class MainHandler(webapp.RequestHandler):
def get(self):
db.delete(ModelWithAGenericList.all())
m = ModelWithAGenericList(mylist = [[1,2,3],[4,5,6],6])
m.put()
m = ModelWithAGenericList.all().fetch(1)[0]
self.response.out.write(str(m.mylist))
# Outputs: [[1, 2, 3], [4, 5, 6], 6]