首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongoengine ReferenceField问题

Mongoengine ReferenceField问题
EN

Stack Overflow用户
提问于 2012-02-08 03:56:18
回答 1查看 3.3K关注 0票数 2

我想创建一个引用字段,它的文档类型与它将成为其成员的引用字段的文档类型相同,但它不起作用,我不知道如何解决这个问题。我是不是忘了什么,或者我必须用另一种方式来做?

代码语言:javascript
复制
import mongoengine as mongo

class AuthRequest(mongo.EmbeddedDocument):
    user_id = mongo.IntField(required=True, min_value=0)
    message = mongo.StringField(required=True, max_length=256)


class DatabaseUser(mongo.EmbeddedDocument):
    id = mongo.IntField(primary_key=True, min_value=0)
    name = mongo.StringField(required=True, unique=True, max_length=24)
    passw = mongo.StringField(required=True)
    mail = mongo.EmailField(required=True)
    last_online = mongo.DateTimeField()
    contact_field = mongo.ReferenceField('self',
                        reverse_delete_rule=mongo.NULLIFY)
    contacts = mongo.ListField(contact_field)
    requests = mongo.ListField(mongo.EmbeddedDocumentField(AuthRequest))


class UserCollection(mongo.Document):
    users = mongo.ListField(mongo.EmbeddedDocumentField(DatabaseUser))
    meta = {'collection': 'users'}

这是我在使用“DatabaseUser”时得到的错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "path_to_my_script.py", line 206, in <module>
    class DatabaseUser(mongo.EmbeddedDocument):
  File "E:\Python27\lib\site-packages\mongoengine\base.py", line 401, in __new__
    field.document_type.register_delete_rule(new_class, field.name,
  File "E:\Python27\lib\site-packages\mongoengine\fields.py", line 605, in document_type
    self.document_type_obj = get_document(self.document_type_obj)
  File "E:\Python27\lib\site-packages\mongoengine\base.py", line 42, in get_document
    """.strip() % name)
mongoengine.base.NotRegistered: `DatabaseUser` has not been registered in the document registry.
            Importing the document class automatically registers it, has it
            been imported?

这是使用“self”时的错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "path_to_my_script.py", line 206, in <module>
    class DatabaseUser(mongo.EmbeddedDocument):
  File "E:\Python27\lib\site-packages\mongoengine\base.py", line 401, in __new__
    field.document_type.register_delete_rule(new_class, field.name,
AttributeError: type object 'DatabaseUser' has no attribute 'register_delete_rule'

我在Windows7(64位)上使用Python 2.7.2 (64位)和Mongoengine v.5。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-08 05:18:00

目前,参照字段仅支持文档参照,不支持嵌入文档。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9182934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档