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()