在 mongoengine 中通过 ReferenceField 设置文档 ID
Setting Document id by ReferenceField in 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 只存储一些 ObjectId,因此我不明白为什么这不可能,但是 MongoEngine 支持这样的东西吗?
Document Ids 必须是唯一的,因此您需要将 id
字段的 primary_key
设置为 True
。
class Credential(Document):
id = ReferenceField(User, primary_key=True)
...
在 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 只存储一些 ObjectId,因此我不明白为什么这不可能,但是 MongoEngine 支持这样的东西吗?
Document Ids 必须是唯一的,因此您需要将 id
字段的 primary_key
设置为 True
。
class Credential(Document):
id = ReferenceField(User, primary_key=True)
...