2016-01-28 46 views
0

我正在使用MongoEngine和Django。在我的Django應用程序,我想創建以下嵌入文檔領域:Django MongoEngine嵌入文檔問題

from mongoengine import Document, EmbeddedDocument, StringField, DateTimeField, \ 
    IntField, EmbeddedDocumentField, BooleanField, ListField 

class Person(EmbeddedDocument): 
    name = StringField(max_length=200, required=True) 
    gender = BooleanField() 
    birth_date = DateTimeField() 
    death_date = DateTimeField() 
    parents = ListField(EmbeddedDocumentField(Person)) 

我去測試在Python殼我的代碼,我收到以下錯誤:

>>> from models import Person 
Traceback (most recent call last): 
...(cut for brevity)... 
parents = ListField(EmbeddedDocumentField(Person)) 
NameError: name 'Person' is not defined 

來講MongoDB模式設計,這應該是一個完全有效的模式,但MongoEngine似乎不喜歡它。有人可以解釋這裏的問題是什麼,以及如何以一種很好的方式避免它?

回答

2

這與MongoEngine無關;這是一個簡單的Python範圍界定問題。 Person在類的主體完成執行之前未定義,這意味着您不能在該類主體本身中使用該名稱。

然而MongoEngine有一個解決方法,如documentation解釋;改用字符串'self'