我在Django上使用MongoEngine。在我的Django应用程序中,我想创建以下嵌入式文档字段:
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 shell中测试我的代码,我收到了以下错误:
>>> from models import Person
Traceback (most recent call last):
...(cut for brevity)...
parents = ListField(EmbeddedDocumentField(Person))
NameError: name 'Person' is not defined
就MongoDB架构设计而言,这应该是一个完全有效的架构,但MongoEngine似乎并不喜欢它。有人可以解释这里的问题是什么以及如何以一种很好的方式避免它?
答案 0 :(得分:2)
这与MongoEngine无关;这是一个简单的Python范围问题。在类的主体完成执行之前,不会定义Person
,这意味着您不能在该类主体中使用该名称。
'self'
。