栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在mongoengine中获取ReferenceField数据?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在mongoengine中获取ReferenceField数据?

当前不直接支持此功能,因为MongoEngine仅支持mongodb的扩展json语法。

mongoengine所做的所有工作都是使用pymongo

json_utils
来转储数据。没有理由不能明确使用它,例如:

    from bson import json_util    class Inbox(db.document):        from_user    = db.ReferenceField(User, required=True)        subject      = db.StringField(max_length=255, required=True)        created_at   = db.DateTimeField(default=datetime.now)        messages     = db.ListField(db.EmbeddeddocumentField(Message))        def to_json(self): data = self.to_mongo() // get the pymongo representation of the document data["from_user"] = {"User": {"username": self.from_user.username}} return json_util.dumps(data) User.drop_collection()    ...    Inbox.drop_collection()    ross = User(username="Ross").save()    Inbox(from_user=ross, subject="Mongoengine should make json easier").save()    doc = Inbox.objects.only('from_user', 'subject', 'created_at').get()    print doc.to_json()    {"_id": {"$oid": "538c3d71c3d384172fe35393"},      "from_user": {"User": {"username": "Ross"}},      "subject": "Mongoengine should make json easier",      "created_at": {"$date": 1401703297198}, "messages": []}

更新

带有自定义查询集的示例:

   from bson import json_util    class CustomQuerySet(QuerySet):         def to_json(self): return "[%s]" % (",".join([doc.to_json() for doc in self]))    class Inbox(document):        from_user    = ReferenceField(User, required=True)        subject      = StringField(max_length=255, required=True)        created_at   = DateTimeField(default=datetime.now)        messages     = ListField(EmbeddeddocumentField(Message))        meta = {'queryset_class': CustomQuerySet}        def to_json(self): data = self.to_mongo() data["from_user"] = {"User": {"username": self.from_user.username}} return json_util.dumps(data)  ...  ipdb> Inbox.objects.only('from_user', 'subject', 'created_at').to_json()        '[{"_id": {"$oid": "538d84cbc3d3843eeeb5dbbe"}, "from_user": {"User": {"username": "Ross"}}, "subject": "Mongoengine should make json easier", "created_at": {"$date": 1401787099246}, "messages": []}]'


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659695.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号