我在做一个平台,由于之前用 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 ;而写入时,可以根据前端的某些字段来正确生成对应的子类模型。
具体包含很多问题,比如, 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. 全职雇佣(本地)。