在mongodb usyng python中使用自定义ID类型
我使用mongodb作为Django 1.5应用程序中我的一些信息的存储后端 mongodb集合中存储的每个文档都有一个_id字段,它是由多个字符串组成的dict。 现在,当我尝试检索此信息时,我使用mongoengine将文档映射到模型类:在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 当我调
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)