我的模型中有以下 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”。错误是:
InvalidQueryError: Cannot resolve field "hough_distance"
我也试过:
mongoMedia._get_collection().update({'id': media_obj.id }, {'$set': {'hough_distance.%s' % (hough_distance.distance): object_compare} } )
这不会在集合中保存任何内容。
虽然这在 mongodb shell 中有效:
db.mongo_media.update( { '_id': media_object._id }, { $set: { 'hough_distance': { 'k1': v1} } } )
如何以有效的 Django 语法“翻译”上述内容,以及为什么 DictField() 未在对象“_fields”属性中列出?
非常感谢!
编辑:
让我换一种说法:如何在 Django 中更新 MongoDB 字典?