【问题标题】:Setting Document id by ReferenceField in mongoengine在 mongoengine 中通过 ReferenceField 设置文档 id
【发布时间】:2016-02-29 20:00:49
【问题描述】:

在 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 是否支持类似的东西?

【问题讨论】:

    标签: python mongoengine


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 2017-12-11
      • 2016-08-01
      • 2014-02-09
      • 2015-04-24
      • 1970-01-01
      相关资源
      最近更新 更多