MongoEngine 0.5:RuntimeError:调用 Python 对象时超出最大递归深度

Posted

技术标签:

【中文标题】MongoEngine 0.5:RuntimeError:调用 Python 对象时超出最大递归深度【英文标题】:MongoEngine 0.5: RuntimeError: maximum recursion depth exceeded while calling a Python object 【发布时间】:2011-12-01 04:25:37 【问题描述】:
    >>> from mongoengine import *
    >>> connect('foo')
    >>> class Foo(Document):
    ...   bar = ListField(ReferenceField('Foo'))
    >>> a = Foo()
    >>> a.save()
    >>> b = Foo()
    >>> b.save()
    >>> a.bar.append(b)
    >>> a.save()
    >>> b.bar.append(a)
    >>> b.save()

导致“运行时错误:超出最大递归深度,而 在 MongoEngine 0.5 中调用 Python 对象。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

这已在 dev 分支中修复 - 请更新。

【讨论】:

谢谢!知道何时发布此修复程序吗? 0.5.1 已发布,但 0.5.2 有更好的修复,我今天会尝试解决这个问题!【参考方案2】:

RTD --> http://mongoengine-odm.readthedocs.org/en/latest/guide/defining-documents.html#reference-fields

要添加引用正在定义的文档的 ReferenceField, 使用字符串“self”代替文档类作为参数 到 ReferenceField 的构造函数。

试试这个:

class Foo(Document):
    bar = ListField(ReferenceField('self'))

【讨论】:

以上是关于MongoEngine 0.5:RuntimeError:调用 Python 对象时超出最大递归深度的主要内容,如果未能解决你的问题,请参考以下文章

Mongoengine:查询 MapField

MongoEngine:关闭连接

django连接mongodb mongoengine

我可以将 MOTOR 用于 mongoengine 吗?

Mongoengine 中的“QuerySet”对象到底是啥?

mongoengine