我有一个自定义的ndb属性子类,它应该将空字符串解析为None。当我在_validate函数中返回None时,忽略None值并仍然使用空字符串 我可以以某种方式将输入值转换为无吗?
class BooleanProperty(ndb.BooleanProperty):
def _validate(self, value):
v = unicode(value).lower()
# '' should be casted to None somehow.
if v == '':
return None
if v in ['1', 't', 'true', 'y', 'yes']:
return True
if v in ['0', 'f', 'false', 'n', 'no']:
return False
raise TypeError('Unable to parse value %r to a boolean value.' % value)
答案 0 :(得分:0)
也许您正在寻找类似 ndb.ComputedProperty 的内容?
class YourBool(ndb.Model):
my_input = StringProperty()
val = ndb.ComputedProperty(
lambda self: True if self.my_input in ["1","t","True","y","yes"] else False)
答案 1 :(得分:0)
我的实现会覆盖_set_value方法。 Appengine文档没有记录这一点,但它有效。
class MyBooleanProperty(ndb.BooleanProperty):
def _set_value(self, entity, value):
if value == '':
value = None
ndb.BooleanProperty._set_value(self, entity, value)