Django可以说是非常好的兼容了所有的关系型数据库,对于非关系型数据库可以说是有点不友好了,奈何还有很多无私的开源工作者为我们提供了很多便利,比如django-rest-framework-mongoengine这个神奇的东西,太多细节就不说了,因为公司就用mongo数据库,我用jdango这个框架,可以说还是遇到了一个很头疼的问题就是以下这个字段,嵌套三层,试了很多方法,各种序列化都不成功,今天总算解决了。(其实就是想太多)
我们在数据库里面看到dietary这个字段后面跟着一个object,其实就是字典类型,然后里面套了三层信息。
具体建库:
1. 本身dietary在一个食品表里,
2.她自己的详情表有几个信息
3. cookingstep对应的表里
4. foodmetail表
可以说就是套了三层
如果分别序列化,按照关系数据库的那种方式序列化是各种报错,报NoneType什么的错.
其实解决方法很简单,我们只是查库,在原来的大表中:
dietary = fields.DictField()
就可以,序列化的时候:
massRatio = serializers.DictField()
就可以跑出来想要的结果:
EmbeddedDocumentSerializer
本身还是有缺陷的,不怎么好用。