博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongoengine 学习 笔记
阅读量:5156 次
发布时间:2019-06-13

本文共 2214 字,大约阅读时间需要 7 分钟。

一边做项目,一边做笔记的。这习惯不好,做项目的时候,不酣畅,但我 一做完项目就忘了,其中的想法。回头也找不出头绪了。

1:

 创建model (整个项目的部署 如同django)   有:setting,url,model,views

import mongoengine as models class Project(models.Document):    pass    class Respondent(models.DynamicDocument):    pass

这里的Docment.DynamicDocument.区别在于DynamicDocument可扩展.respondente的动态属性也会保存.而project的动态属性会报错。

http://docs.mongoengine.org/en/latest/apireference.html?highlight=dynamicdocument#mongoengine.DynamicDocument   更多model 不过我觉得 这2个model就够用了 。

 

2:

class Question(models.Document):      option_list = models.ListField(models.ReferenceField('Option'))

创建question的时候,是将所有的option都做好,拼成一个list  option_list.然后直接  question.option_list = option_list .

这么做得好处是:当添加修改功能的时候。直接相同的页面,相同的代码。 避免了,通过id 取出question.option_list中特定的list然后修改list这样代码量增加 好多,Ajax。传递,option修改。或许还要添加前台的html页面。   (现在做页面的时候,尽量用ajax 尽量页面:为3个层次)

3:

class Question(models.Document):    option_list = models.ListField(models.ReferenceField('Option'))class Option(models.Document):    jump_to = models.ReferenceField('Question')

这个2个model相互引用,也不可以 。django model中mysql 不可以相互引用。nosql 竟然也不可以。看来我对nosql 不熟悉。

4:

class Project(models.Document):       question_list = models.ListField(models.ReferenceField('Question'))    @property    def to_dict(self):        return dict(question_list = [question.to_dict for question in self.question_list],)class Question(models.Document):    option_list = models.ListField(models.ReferenceField('Option'))    @property    def to_dict(self):        return dict(id = self.oid,option_list = [option.to_dict for option in self.option_list], )class Option(models.Document):       jump_to = models.ReferenceField('Question')    @property    def jump_to_question(self):         return self.jump_to.oid if self.jump_to else None    @property     def to_dict(self): return dict( jump_to = self.jump_to_question, )

这3个model中 project.to_dict 将所有的project的信息提取出来。

但遇到一个问题。当     json.dump(project.to_dict) 的时候 无法解析,估计就是json无法递归解析吧。就写了一个函数,jump_to_question 返回 question的id就行了。

 

5:今天遇到mongoengine的一个大问题。(mongoengine   0.7.9)

   a = xx.objects(xx=xx)  或者 a = xx.objects().filter(xx=xx)   

   每次使用a 的时候,都会从数据库中读。每次使用a   a的值都可能会变。

   这 尼玛  太坑爹了。 

   可以 先  使用 list()将其转化,那么 第二次使用的时候,a 就不会变了 。

    

 

 

转载于:https://www.cnblogs.com/tiger4py/archive/2013/03/27/2980187.html

你可能感兴趣的文章
霍夫变换(Hough Transform)
查看>>
tomcat 内存溢出问题
查看>>
C++ OI图论 学习笔记(初步完结)
查看>>
PHP上传大文件 分割文件上传
查看>>
ASP.NET Core的身份认证框架IdentityServer4--(5)自定义用户登录(通过接口登录,无UI版本)...
查看>>
广东农村信用社网址
查看>>
maven 下载源码
查看>>
第二阶段冲刺-06
查看>>
Hadoop笔记——技术点汇总
查看>>
Android开发2:事件处理及实现简单的对话框(Toast,AlertDialog,Snackbar,TextInputLayout的使用)...
查看>>
mysql安装 demo [linux centos7] [5.7.26]
查看>>
ubuntu 16.04 搭建无线共享热点(PC 无线直连Android移动终端 调试,监控屏幕)
查看>>
Java EE 架构设计——基于okhttp3 的网络框架设计
查看>>
东软软件动态生成对数据表更新操作的方法
查看>>
Add Digits
查看>>
第二章 Mablab语言基础
查看>>
【Luogu】P1607庙会班车Fair Shuttle(线段树+贪心)
查看>>
crash reporting system for Windows applications
查看>>
系统启动正常,进入桌面时黑屏,可以看到鼠标
查看>>
随意谈谈tcp
查看>>