我有一个模特
class MyModel(ndb.Model):
foo = ndb.StringProperty()
class OtherModel(ndb.Model):
baz = ndb.StringProperty()
ref = ndb.KeyProperty(kind=MyModel)
我建立了一个视图,可以在其中创建和修改这些模型实体,我希望ref
of字段OtherModel
是可选的,但是当我尝试提交和清空ref
字段或删除它的旧值时,出现ndb.KeyProperty
验证错误
我的更新逻辑如下所示:
for property in editableProperties:
# Lets suppose this parses values from a form in a request to the needed type
new_value = deserialize(property._kind, self.request.get(property._name))
setattr(item, property._name, new_value)
我在哪里尝试将new_value设置为None
和空字符串。我怎样才能做到这一点?
如果您没有Model
用于设置ref
属性的实体键,则不要设置它-即不要将该属性包含在您要传递回数据存储区以进行写入的实体值中。如果这样做,您传递的属性值将受到完整性检查,并且将失败。
换句话说:根本不做
`setattr(item, property._name, new_value)`
对于ref
何时new_value
不是关键。而是按照以下方式进行操作:
if hasattr(item, property._name):
delattr(item, property._name)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句