Mongoengine DictField()未显示在_fields中

时间:2012-12-06 15:15:30

标签: django mongodb mongoengine

我的模型中有以下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

第二次更新显然不起作用,因为'hough_distance'未在我的'media_object'的'_fields'中列出。错误是:

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

0 个答案:

没有答案