python - 为什么 required 和 default 在ndb中是互斥的?

标签 python google-app-engine google-cloud-datastore app-engine-ndb

在旧的 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/

相关文章:

python - 如何在 Python 2.7 中打印由空格而不是新行分隔的值

python - 让 Pycuda 在 2 个 gpus 上与 Mpi4py 一起工作

python - 维基百科是否允许通过 Google App Engine 获取 URL?

unit-testing - Google App Engine 数据存储 - 测试查询失败

python - 如何更改列的值

python - 获取最后一个索引,最好使用 len(list)-1 还是使用自己的变量?

python - 如何从列表中将五个元素组成一组?

google-app-engine - 我应该如何序列化/引用 App Engine 用户?

java - GAE Long 太长了有没有办法让 Long ID 变短?

java - 急切加载 List<Ref<T>> 的所有条目