嗨大家和couchdb专业人士,
我有这样的映射设置:
class Product(BaseModel):
name= mapping.TextField()
returned = mapping.DictField(mapping.Mapping.build(
reason = mapping.TextField(),
put_back = mapping.BooleanField()
))
我有一个名为getById的函数,它接受一个id并通过以下方式返回产品:
return Product.load(db, id)
我遇到了一个问题:当我加载特定产品时,尝试设置返回的字典,如下所示:
product = Product.getById("123")
product.returned
>>> {}
product.returned['reason'] = "Test"
product.returned
>>> {}
注意: 我最近才修改模型以获得“返回”键。使用getById获取的旧产品对象中没有“返回”键。这会有所作为吗?它应该不对,毕竟这是一个文档DB,它应该是灵活的吗?
为什么product.returned在设置“reason”属性后仍然会返回一个空字典?
我做了一些调试,并意识到产品变量的形式如下:
<Product u'f90173026e859c65cfa08496115bf7bf'@u'11-3ea1135ceb6361631cbb08471d15df1e' {u'name': u'Printer', u'subProducts': [], u'company': {u'id': u'HP', u'name': u'Hewlett-Packard'}, u'productType':.......>
这是什么结果?是视图结果还是文档?
非常感谢任何帮助谢谢!
感谢。
答案 0 :(得分:0)
我发现了问题。显然,couchdb-python不允许您在使用先前映射模型创建的文档中“创建”新密钥。在能够为它们设置值之前,您必须先手动将所需的键添加到所有文档中。