在旧的 google appengine datastore API 中,“required”和“default”可以一起用于属性定义。使用 ndb 我得到一个
ValueError: repeated, required and default are mutally exclusive.
示例代码:
from google.appengine.ext import ndb
from google.appengine.ext import db
class NdbCounter(ndb.Model):
# raises ValueError
count = ndb.IntegerProperty(required=True, default=1)
class DbCounter(db.Model):
# Doesn't raise ValueError
count = db.IntegerProperty(required=True, default=1)
我想在不指定值的情况下实例化一个计数器。我还想避免有人将该值覆盖为 None。上面的例子就构造好了。我或许可以在没有必需属性的情况下生活,而是添加一个 increment() 方法。我仍然不明白 required 和 default 相互排斥的原因。
这是错误还是功能?
最佳答案
我认为你是对的。可能是我写那部分代码的时候一头雾水。 “required=True”的意思是“不允许写入值 None”是有道理的,因此应该可以将其与默认值结合使用。请在 NDB 跟踪器中提交功能请求:http://code.google.com/p/appengine-ndb-experiment/issues/list
请注意,对于重复的属性,事情要复杂得多,即使实现了上述功能,重复的属性也可能继续与必需的或默认的不兼容。
关于python - 为什么 required 和 default 在ndb中是互斥的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14231068/