1

モデルには次のdjangoクラスがあります。

class mongoMedia(Document)
        ....
        category         = StringField()
        hough_distance   = DictField()

コレクションにデータを入力した後、「hough_distance」フィールドを更新する必要があります。
私は次のようなことを試しました:

media_object = mongoMedia.objects.get(sql_id=100)
media_object.update(set__category='catX') #it works
media_object.update(set__hough_distance={'k1': v1, 'k2': v2}) #does not work

'media_object'の'_fields'に'hough_distance'がリストされていないため、2番目の更新は明らかに機能しません。エラーは次のとおりです。

InvalidQueryError: Cannot resolve field "hough_distance"

私も試しました:

mongoMedia._get_collection().update({'id': media_obj.id }, {'$set': {'hough_distance.%s' % (hough_distance.distance): object_compare} } )

コレクションには何も保存されません。

これはmongodbシェルで機能しますが:

db.mongo_media.update( { '_id': media_object._id }, { $set: { 'hough_distance': { 'k1': v1} } } )

上記を有効なDjango構文で「変換」するにはどうすればよいですか?また、DictField()がオブジェクトの「_fields」属性にリストされていないのはなぜですか?

どうもありがとう!

編集:

別の言い方をすれば、DjangoでMongoDB辞書を更新するにはどうすればよいですか?

4

0 に答える 0