0

こんにちは皆さん、そしてcouchdbのプロです。

次のようなマッピング設定があります。

class Product(BaseModel):
  name= mapping.TextField()
  returned = mapping.DictField(mapping.Mapping.build(
    reason = mapping.TextField(),
    put_back = mapping.BooleanField()
  ))

ID を受け取り、次の方法で製品を返す getById という関数があります。

return Product.load(db, id)

問題があります: 特定の製品をロードし、返された辞書を次のように設定しようとすると:

product = Product.getById("123")
product.returned
>>> {}
product.returned['reason'] = "Test"
product.returned
>>> {}

注: 最近、モデルを「返された」キーを持つように変更したばかりです。getById を使用して取得された古い製品オブジェクトには、「返された」キーが含まれていません。これは違いを生むでしょうか?結局のところ、これはドキュメント DB であり、柔軟である必要があります。

「reason」属性を設定した後でも、product.returned が空の辞書を返すのはなぜですか?

デバッグを行ったところ、product 変数の形式が次のようになっていることがわかりました。

<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 に答える