I'd like to be able to run a query like: MyModel.query(MyModel.some_property == None)
and get results. I know that if I don't put a default=<some default>
in a property, I won't be able to query for it, but if I set default=None
will it index it?
Similarly, does setting values to None
cause properties to be indexed in ndb.Model
? What if you pass some_keyword_arg=None
to the constructor?
I know that doing something like: ndb.StringProperty(default='')
means you can query on it, just not clear on the semantics of using None
.
Explicitly setting a property to None is defining a value, and yes defaults work and the property will be indexed. This assumes None is a valid value for a particular property type.
Some issues will arise, as you pointed out, often you use None as a sentinal value, so how do you tell between no Value provided and an explicit None?