在mongodb usyng python中使用自定义ID类型

在mongodb usyng python中使用自定义ID类型,python,mongodb,mongoengine,Python,Mongodb,Mongoengine,我使用mongodb作为Django 1.5应用程序中我的一些信息的存储后端 mongodb集合中存储的每个文档都有一个_id字段,它是由多个字符串组成的dict。 现在,当我尝试检索此信息时,我使用mongoengine将文档映射到模型类: from mongoengine import * class MyClass(Document): _id = DictField() 我认为: documents = MyClass.objects print documents 当我调

我使用mongodb作为Django 1.5应用程序中我的一些信息的存储后端

mongodb集合中存储的每个文档都有一个_id字段,它是由多个字符串组成的dict。 现在,当我尝试检索此信息时,我使用mongoengine将文档映射到模型类:

from mongoengine import *

class MyClass(Document):
    _id = DictField()
我认为:

documents = MyClass.objects
print documents
当我调用视图时,我得到一个
TypeError

TypeError at /viewname/
id must be an instance of (str, unicode, ObjectId), not <type 'dict'>
我得到了相同的错误,但是在db集合中创建了具有
\u id={“tag”:“sometag”}
的文档

你知道会发生什么吗?这可能与正在发生的情况相同


注意:我尝试使用EmbeddedDocumentField,但结果相同(错误采用我的嵌入式类名而不是“dict”)

不要对
\u id
字段使用dict,请使用该字典的哈希

例如,sha1是字典的json表示形式,或者如果记录的数量不是那么多,只需
hash

我发现它:

我缺少
主键
参数。如果我在模型上更改它:

class MyClass(Document):
    id = DictField(primary_key=True)
它在读写两个操作中都开始工作


这是官方文件:

对不起,我不是唯一一个与此数据交互的人,因此Id已经给出,我主要对其执行读取操作。
class MyClass(Document):
    id = DictField(primary_key=True)