我需要一个属性类型,它可以使用Python接口设置NDB的True、False和None值。对于单个属性属性,这是相当容易做到的。在
然而,对于repeated属性属性(repeated=True),似乎不可能将列表项设置为None。无论我尝试过哪种方法,NDB库都会引发异常。在
一次尝试如下:
class LOGICAL(ndb.GenericProperty):
def _set_value(self, entity, value):
if isinstance(value, (list, tuple, set, frozenset)):
for i, val in enumerate(value):
if isinstance(val, str):
if val.lower() in ('unknown', 'none'):
value[i] = None
if isinstance(value, str):
if value.lower() in ('unknown', 'none'):
value = None
ndb.Property._set_value(self, entity, value)
def _validate(self, value):
if isinstance(value, str):
if value.lower() == 'true':
return True
if value.lower() == 'false':
return False
raise AssertionError('LOGICAL must be one of "true","false","unknown","none" or'
'True, False, None.')
if value is not None:
assert isinstance(value, bool)
当一个单一的属性被拒绝时,[我不想为任何一个逻辑属性赋值',但我不想为一个逻辑属性赋值。我从后台的“machine”和一个很长很长的堆栈跟踪中得到以下警告。在
^{pr2}$如果我的任务是不可能完成的,或者采取哪种方法,请告诉我。在
_validate
无法正确处理“未知”和“无”的情况:然后,在函数的最后:
^{pr2}$因此,得到的函数是:
相关问题 更多 >
编程相关推荐