Django MongoEngine 内嵌文档问题
Django MongoEngine embedded document issue
我正在将 MongoEngine 与 Django 一起使用。在我的 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 似乎并不喜欢它。有人可以解释这里的问题是什么以及如何以一种好的方式避免它吗?
这与MongoEngine无关;这是一个简单的 Python 范围界定问题。 Person
直到 class 的主体执行完毕才定义,这意味着您不能在 class 主体本身中使用该名称。
MongoEngine 确实有一个解决方法,正如 documentation 所解释的那样;请改用字符串 'self'
。
我正在将 MongoEngine 与 Django 一起使用。在我的 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 似乎并不喜欢它。有人可以解释这里的问题是什么以及如何以一种好的方式避免它吗?
这与MongoEngine无关;这是一个简单的 Python 范围界定问题。 Person
直到 class 的主体执行完毕才定义,这意味着您不能在 class 主体本身中使用该名称。
MongoEngine 确实有一个解决方法,正如 documentation 所解释的那样;请改用字符串 'self'
。