什麼將最好的方式將StringProperty轉換爲不帶中斷代碼的IntegerProperty,並且在不改變某種類型的所有實體的情況下動態執行此操作?更改屬性格式
顯然假設數據是正確的。
例如: StringProperty = u'1234' 轉變爲IntegerProperty = 1234
現在,如果你從STR修改屬性模型獲取數據時該屬性爲int說無
感謝
什麼將最好的方式將StringProperty轉換爲不帶中斷代碼的IntegerProperty,並且在不改變某種類型的所有實體的情況下動態執行此操作?更改屬性格式
顯然假設數據是正確的。
例如: StringProperty = u'1234' 轉變爲IntegerProperty = 1234
現在,如果你從STR修改屬性模型獲取數據時該屬性爲int說無
感謝
如果您正在使用NDB你可能也想嘗試ComputedProperty:
好,那麼你可以定義你自己的屬性類型,例如
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()
您可以使用GenericProperty加上後得到掛鉤,改變字符串爲整數,並將其寫入回來。您可以使回寫異步。
是的我正在使用NDB,但我想只保持相同的名稱更改類型。恩。 marca = ndb.StringProperty() - > marca = ndb.InteProProperty() – user1187859 2012-02-15 14:25:57