在mongoengine中通过ReferenceField设置文档ID

时间:2015-11-26 16:38:10

标签: python mongoengine

在Mongoengine中,我试图通过位于不同数据库中的文档的ReferenceField来设置文档的id字段。

class User(Document):
    name = StringField()
    meta = {"db_alias": "user_db"}

class Credential(Document):
    id = ReferenceField(User)
    password = StringField()
    meta = {"db_alias": "credentials_db"}

我可以做u = User('someuser').save()这样的问题 Credential(u, 'somepassword').save()变成了

ValidationError (Credential:None) (Invalid Object ID: ['auto_id_0'] Field is required: ['id'])

当然Mongodb只存储了一些ObjectIds,因此我看不出为什么这不可能,但是MongoEngine是否支持这样的东西?

1 个答案:

答案 0 :(得分:1)

Document Ids必须是唯一的,因此您需要为primary_key字段设置Trueid

class Credential(Document):
    id = ReferenceField(User, primary_key=True)
    ...