Python 嵌入文档中的ReferenceField到主控文档

Python 嵌入文档中的ReferenceField到主控文档,python,mongoengine,Python,Mongoengine,在mongoengine中,我有Document和EmbeddedDocument这样的文档。 如何在嵌入文档中为主文档创建引用字段。。。主文档表示嵌入我的嵌入文档 class Activity(EmbeddedDocument): user = ReferenceField(Profile) followed_user = ReferenceField(Profile) created_date = DateTimeField(default=datetime.date

mongoengine
中,我有
Document
EmbeddedDocument
这样的文档。 如何在
嵌入文档
中为主
文档
创建
引用字段
。。。主
文档
表示嵌入我的
嵌入文档

class Activity(EmbeddedDocument):
    user = ReferenceField(Profile)
    followed_user = ReferenceField(Profile)
    created_date = DateTimeField(default=datetime.datetime.now, required=True)


class Profile(Document):
    username = StringField(max_length=255, required=True)
    password = StringField(max_length=255, required=True)
    email = StringField(max_length=255, required=True)
    activities = ListField(EmbeddedDocumentField(Activity))
Python说:

 NameError: name 'Profile' is not defined

EmbeddedDocuments应通过EmbeddedDocumentField字段类型用作文档上的字段

因此,您的Profile类应该是

class Profile(Document):
    username = StringField(max_length=255, required=True)
    password = StringField(max_length=255, required=True)
    email = StringField(max_length=255, required=True)
    activities = ListField(EmbeddedDocumentField(Activity))

注意:我之所以创建列表,是因为每个配置文件将有多个活动

嵌入文档应通过嵌入文档字段字段类型用作文档上的字段

因此,您的Profile类应该是

class Profile(Document):
    username = StringField(max_length=255, required=True)
    password = StringField(max_length=255, required=True)
    email = StringField(max_length=255, required=True)
    activities = ListField(EmbeddedDocumentField(Activity))

注意:我之所以创建一个列表,是因为每个配置文件将有多个活动

在嵌入文档中也必须使用
self

class Activity(EmbeddedDocument):
    user = ReferenceField('Profile')
    user_unrelated = ReferenceField('Profile')
    created_date = DateTimeField(default=datetime.datetime.now, required=True)

在嵌入文档中也必须使用
self

class Activity(EmbeddedDocument):
    user = ReferenceField('Profile')
    user_unrelated = ReferenceField('Profile')
    created_date = DateTimeField(default=datetime.datetime.now, required=True)

在活动中添加EmbeddedDocumentField时,不需要在活动中添加引用字段Profiles@Crazyshezy为什么?为其他用户创建引用字段。。。例如,我跟随X和Y,X跟随N,对我说X跟随NOk,明白了。。此外,mongoengine还有一个
emailField()
在活动中添加EmbeddedDocumentField时,不需要在活动中添加引用字段Profiles@Crazyshezy为什么?为其他用户创建引用字段。。。例如,我跟随X和Y,X跟随N,对我说X跟随NOk,明白了。。此外,mongoengine还有一个
emailField()