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”。错误是:

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 字典?

4

0 回答 0