Django Rest Framework + Mongo 经验求教

2017-01-23 13:03:35 +08:00
 dabaizuishuai

我在做一个平台,由于之前用 django 比较熟,加之想尝试一下 Mongo ,就误入了 Django+Mongo 的深坑。发现 Django 生态中支持 mongo 的包并不多,也不够成熟。
目前 Mongoengine+DRF 的框架,用的最多的是DRF-mongoengine。但是目前的使用中遇到了以下几个问题,希望能够找到对这方面熟悉的人帮忙解决问题,有报酬;同时也招聘全职兼职 python 程序员。我们在深圳科技园郎峰大厦,希望本地的大牛可以有偿指导。

嵌套结构与模型继承的支持

Mongoengine 支持嵌套结构,以及类的继承。但 DRF-Mongoengine 对 Document 的嵌套以及模型继承支持并不好。

class A(Document):
    b = ReferenceField('B_Base')

class B(Document):
    f1 = StringField()
    ....

class B_1(B):
    f2 = StringField()
    ...

class A_Serializer(Serializer):
    b = B_Serializer()

此时如何写 A 的序列器,使得 A 能够正确读写? 能够正确读写指的是,读取时能够根据数据库中的_cls 字段,正确选择不同子类对应的 Serializer ;而写入时,可以根据前端的某些字段来正确生成对应的子类模型。

DRF-Mongoengine 的性能优化问题

具体包含很多问题,比如, view 中获取对象 list 的时候, DRF-Mongoengine 会在后端遍历 cursor ,此时效率非常低,需要设置 batch_size 来加快遍历效率。但是 mongoengine 的 batch_size 直到前几周才被实现。( https://github.com/MongoEngine/mongoengine/pull/1426 ) 对于 List(ReferenceField())的优化更惨。实现中我们手动使用 Mongoengine.Document.as_pymongo()来批量读取原始 json 结果到本地,再遍历 json 中的 list 来反序列化得到 list 中的每个对象,减少请求次数。

对于这些问题,我们解决起来比较头疼,想请论坛中的大牛谈谈应对 Mongo+Django 的经验,以及如果有能提供解决方案的,我们愿意以三种方式结算, 1. 有偿指导, 2. 兼职(本地,远程), 3. 全职雇佣(本地)。

2937 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/336424

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX