下面的完整工作示例可以在交互式控制台中运行。
这是预期的吗?如果是这样,我有两个问题:
1)请在GAE文件中说明这一点。
2)请显示db.Model
的模式,该模式在创建时默认为某个属性的填充列表,但仍允许我们稍后分配空列表(或无)。 / p>
from google.appengine.ext import db
class TestClass(db.Model):
my_string_list = db.StringListProperty(default=['foo', 'bar'])
instance = TestClass()
instance.put()
print instance.my_string_list
#['foo', 'bar']
instance.my_string_list = []
instance.put()
print instance.my_string_list
#[]
instance2 = db.get(instance.key())
print instance2.my_string_list
#expected [], got ['foo', 'bar'] ???
答案 0 :(得分:0)
值得注意的是,使用NDB(较新的数据存储区API),重复,必需和默认是互斥的。也就是说,重复属性(例如StringListProperty)不能有默认值。也许您需要重新设计,而不是使用默认值,创建一个函数来获取模型的新实例:
from google.appengine.ext import db
class TestClass(db.Model):
my_string_list = db.StringListProperty(default=[])
@classmethod
def get_new_instance(cls):
entity = cls()
entity.my_string_list = ['foo', 'bar']
return entity
这一切都假设您打开的错误报告暂时不会被解决。如果他们在NDB上不支持这种情况,它可能会变成与旧的DB API类似的情况。