古いGoogleAppEngineデータストアAPIでは、「必須」と「デフォルト」をプロパティ定義に一緒に使用できました。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)
値を指定せずにCounterをインスタンス化したい。また、誰かがその値をNoneにオーバーライドすることを避けたいと思います。上記の例を作成します。おそらく、必須の属性がなくても、increment()メソッドを追加することができます。それでも、requiredとdefaultが相互に排他的である理由はわかりません。
それはバグですか、それとも機能ですか?