【问题标题】:Django MongoEngine embedded document issueDjango MongoEngine 嵌入式文档问题
【发布时间】:2016-01-28 16:59:08
【问题描述】:

我在 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 似乎并不喜欢它。有人可以解释这里的问题是什么以及如何以一种好的方式避免它吗?

【问题讨论】:

    标签: python django mongodb mongoengine


    【解决方案1】:

    这与MongoEngine无关;这是一个简单的 Python 范围问题。 Person 直到类的主体完成执行后才定义,这意味着您不能在该类主体本身中使用该名称。

    然而,正如documentation 解释的那样,MongoEngine 确实有一个解决方法;请改用字符串'self'

    【讨论】:

      猜你喜欢
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-21
      相关资源
      最近更新 更多