我在mongoengine
中有Document
和EmbeddedDocument
。如何在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))
注意:我正在创建一个列表,因为每个配置文件将有多个活动