在EmbeddedDocument中的ReferenceField来控制文档



我在mongoengine中有DocumentEmbeddedDocument。如何在EmbeddedDocument中为Document创建ReferenceField…master 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中使用self

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

EmbeddedDocuments应该通过EmbeddedDocumentField字段类型作为Documents上的字段使用。

所以你的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))

注意:我正在创建一个列表,因为每个配置文件将有多个活动

最新更新