モデルには次の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辞書を更新するにはどうすればよいですか?