Если вы используете NDB, вы также можете попробовать ComputedProperty:
https://docs.google.com/document/d/1dsx1hihmMXMJm8wIRu49tJR-KEng80o3wkg4Nlbqn-w/edit#heading=h.crpcpjr4rp21
хорошо, тогда вы можете определить свой собственный тип свойства, например
class Str2IntProperty(Property):
"""A Property whose original string value will be converted to an integer."""
def _validate(self, value):
if not isinstance(value, (int, long, str)):
raise datastore_errors.BadValueError('Expected integer, got %r' %
(value,))
return int(value)
def _db_set_value(self, v, unused_p, value):
if not isinstance(value, (str, int, long)):
raise TypeError('Str2IntProperty %s can only be set to integer or string values; '
'received %r' % (self._name, value))
v.set_int64value(int(value))
def _db_get_value(self, v, unused_p):
if not v.has_int64value():
try:
return int(v)
except ValueError:
return 0
return int(v.int64value())
А потом в твоей модели
class MyModel(ndb.Model):
my_prop = Str2IntProperty()