0

大家好,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 获得的旧产品对象中没有“返回”键。这会有所作为吗?它不应该是正确的,毕竟这是一个文档数据库,它应该是灵活的,对吧?

为什么设置“原因”属性后 product.returned 仍然返回一个空字典?

我做了一些调试并意识到产品变量的形式是:

<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':.......>

这是一个什么样的结果?它是视图结果还是文档?

非常感谢任何帮助,谢谢!

谢谢。

4

1 回答 1

0

我发现了问题。显然,couchdb-python 不允许您在使用先前映射模型创建的文档中“创建”新键。您必须先手动将所需的键添加到所有文档,然后才能为其设置值。

于 2012-06-14T03:10:30.320 回答