Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Mongoengine参考场问题_Python_Mongodb_Mongoengine - Fatal编程技术网

Python Mongoengine参考场问题

Python Mongoengine参考场问题,python,mongodb,mongoengine,Python,Mongodb,Mongoengine,我想创建一个referencefield,它采用与它将成为其成员的文档类型相同的文档类型,但它不起作用,我不知道如何解决这个问题。我是忘了什么还是必须用另一种方式 import mongoengine as mongo class AuthRequest(mongo.EmbeddedDocument): user_id = mongo.IntField(required=True, min_value=0) message = mongo.StringField(require

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

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”时遇到的错误:

回溯(最近一次呼叫最后一次):
文件“path_to_my_script.py”,第206行,在
类数据库用户(mongo.EmbeddedDocument):
文件“E:\Python27\lib\site packages\mongoengine\base.py”,第401行,新__
field.document\u type.register\u delete\u规则(新类,field.name,
文件“E:\Python27\lib\site packages\mongoengine\fields.py”,第605行,文档类型
self.document\u type\u obj=获取文档(self.document\u type\u obj)
get\U文档第42行的文件“E:\Python27\lib\site packages\mongoengine\base.py”
“”.strip()%name)
mongoengine.base.NotRegistered:`DatabaseUser`尚未在文档注册表中注册。
导入文档类会自动注册它,对吗
是进口的吗?
这就是使用“self”时的错误:

回溯(最近一次呼叫最后一次):
文件“path_to_my_script.py”,第206行,在
类数据库用户(mongo.EmbeddedDocument):
文件“E:\Python27\lib\site packages\mongoengine\base.py”,第401行,新__
field.document\u type.register\u delete\u规则(新类,field.name,
AttributeError:类型对象“DatabaseUser”没有属性“register\u delete\u rule”

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

目前,引用字段只支持文档引用,不支持嵌入文档。

太糟糕了。那么,我必须自己删除引用。无论如何,谢谢!
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?
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'