2013-07-02 74 views
0

是否有可能做這樣的事情?Mongoengine引用其他文檔的字段

class Doc1: 
    fieldd1 = StringField() 

class Doc2: 
    fieldd2 = ReferenceField(Doc1.fieldd1) 

或者我應該只是參考的文件,然後拿到現場信息,每當我需要它

回答

6

這不是更多鈔票,這是關於文件。要獲得fieldd1,你必須做到:

class Doc1(Document): 
    fieldd1 = StringField() 

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

Doc2.objects.first().fieldd2.fieldd1 

如果你想只包括到另一個文件作爲一個文檔的一部分,然後再看看EmbeddedDocumentEmbeddedDcoumentField

class Doc1(EmbeddedDocument): 
    fieldd1 = StringField() 

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

Doc2.objects.first().fieldd2.fieldd1 

但你總是可以設置自己的屬性:

class Doc1(Document): 
    fieldd1 = StringField() 

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

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

Doc2.objects.first().fieldd1 

查看文檔:https://mongoengine-odm.readthedocs.org/en/latest/guide/defining-documents.html

相關問題