Mongoengine引用另一个文档的字段

Jar*_*oke 1 django mongodb mongoengine

可以这样做吗?

class Doc1:
    fieldd1 = StringField()

class Doc2:
    fieldd2 = ReferenceField(Doc1.fieldd1)
Run Code Online (Sandbox Code Playgroud)

或者我应该只引用Doc,然后在需要时获取字段信息

tbi*_*icr 7

这是不可能的,它是对文件的参考.为了让fieldd1你必须这样做:

class Doc1(Document):
    fieldd1 = StringField()

class Doc2(Document):
    fieldd2 = ReferenceField(Doc1)

Doc2.objects.first().fieldd2.fieldd1
Run Code Online (Sandbox Code Playgroud)

如果你只想包括到另一个文件作为一个文档的一部分,然后看看EmbeddedDocumentEmbeddedDcoumentField:

class Doc1(EmbeddedDocument):
    fieldd1 = StringField()

class Doc2(Document):
    fieldd2 = EmbeddedDcoumentField(Doc1)

Doc2.objects.first().fieldd2.fieldd1
Run Code Online (Sandbox Code Playgroud)

但是你总是可以设置自己的属性:

class Doc1(Document):
    fieldd1 = StringField()

class Doc2(Document):
    fieldd2 = ReferenceField(Doc1)

    @property
    def fieldd1(self):
        return self.fieldd2.fieldd1

Doc2.objects.first().fieldd1
Run Code Online (Sandbox Code Playgroud)

请参阅文档:https://mongoengine-odm.readthedocs.org/en/latest/guide/defining-documents.html.