美文网首页《Django By Example》
奠定项目基石:Model

奠定项目基石:Model

作者: gengqing | 来源:发表于2019-07-16 08:24 被阅读0次

环境

虚拟环境+python3.5.2 + Django1.11
安装虚拟环境的原因是,在实际的项目开发过程中,我们可能需要维护多个项目,甚至同时开发不同的项目,而这些项目的依赖又不同,如果不同的依赖都安装在系统环境中,可能会出现意想不到的冲突,所以我们创建了可以独立于系统的Python运行环境和包管理环境,在实际的开发过程中,我们针对不同的项目分别创建独立的虚拟环境。

Model

Django是基于MVC(Model-View-Controller)模式的框架,其中的M就是Model层。


MVC.png

Model在整个项目中是直接和数据库打交道的一层,所以数据处理的部分都放在这一层操作,而且这一层也是整个项目的基石,因为如果数据层出现问题,后面的开发则很难进行下去,或者说没有意义,所以这一层很重要。
这一层有几个比较重要的模块:
Models:模型定义相关的使用说明,需要配置的是字段类型,meta配置等;
QuerySets:在Model的基础上怎么查看数据,有哪些接口可以用,以及如何更进一步进行定制;
Model instances:Model的实例,一个实例可以理解为表中的一条记录;
Migrations:在开发阶段,我们会不断的调整表的结构,这部分就是用来做表结构的调整的。
Advanced:这里涉及如何定义Manager(也就是常用的Model.objects.all中的objects),以及如果不爽ORM的查询限制,但是又想用ORM对象的映射,可以考虑使用原生的SQL。
Other:这一部分有两块,一个是Legacy databases(遗留数据库),想象下,有人甩给你一个已有的CMS项目,要改成Django的,你拿到表,直接根据生成Model。之后你再花几分钟写写admin部分代码,CMS出来了,爽不爽。另外一部分就是Optimize database access。

数据关系模型

数据关系模型.png

这个模型是拿到一个项目之后要先进行需求分析,然后从需求中整理而来。而对于内容或者说数据驱动的项目来说,设计好模型是成功的一半,因为后续的所有操作都是基于Model的。

ORM

ORM(Object Relational Mapping):对象关系映射,大白话解释就是把我们定义的对象(类)映射到对应的数据库表上,所以ORM其实就是代码层面对于数据库表和关系的一种抽象。
简单来说,就是继承了Django的Model,然后定义了对应的字段,Django 会帮我们把Model对应到数据库的表上,Model中定义的属性就对应表的一个字段,而对于有关联关系的Model,比如用到了ForeignKey的Model,就是通过外键关联的表。其中类中的属性对应数据表的字段,属性的类型对应MySQL字段的类型,属性定义时传递的参数定义了字段的其他属性,比如长度,是否允许为空等。
所以,Model中字段的类型跟MySQL中字段的类型相对应是ORM中基本的规则,我们只需要写python的代码,数据库会根据ORM规则自动生成SQL语言,避免了复杂的SQL语句的书写。

QuerySet的使用

在Model中,QuerySet是一个很重要的概念。因为我们同数据库的所有查询以及更新交互都是通过它来完成的。
在Model层中,Django通过给Model增加一个objects属性来提供数据操作的借口,当我们用到它时,他会去DB中获取数据。为什么是当我们用到它时

# 第一句是不会取数据库中提取数据的,他只会生成一个object对象
posts = Post.objects.all()
# 当真正用到它的时候,才会去数据库中拿数据
available_posts = posts.filter(status=1)

其原因是QuerySet支持链式操作,如果每次执行都要查询数据库的话,会存在性能问题。
同时,QuerySet还提供了很多供我们使用的接口,用来查询数据,如all,filter等。
也就是说,Django 的ORM为了达到跟SQL语句同样的表达能力,给我们提供了各种各样的接口。

相关文章

  • 奠定项目基石:Model

    环境 虚拟环境+python3.5.2 + Django1.11安装虚拟环境的原因是,在实际的项目开发过程中,我们...

  • 自律奠定成功的基石

    真正的强者都是高度自律的人 你自律的程度,将决定你人生的高度 你有多自律,就有多成功 生活终会奖赏一个自律的人 能...

  • 合作能力奠定幸福的基石

    孩子在很小的时候,便有与照顾者合作的本质,照顾者只需善用孩子主动想帮忙的情境,开展它与固化它,孩子便能拥有与人合作...

  • 奠定阅读基石 扬帆文化启航

    为继续发扬三大特色的阅读课程,义桥镇中心小学于6月7日6月8日两天时间,连续召开整本书阅读计划汇报。在柳庆光校长的...

  • 龙凤山奠定人生基石(1)

    2018年5月26号、在西安,这一天下的小雨,内心有些起伏。总想着要不要去山上走一走去看一看,因为来到西安一是工作...

  • 孙正义留学美国奠定成功基石

    读日本作家井上笃夫《信仰:孙正义传》有感。 17岁的孙正义 心中燃烧着梦想 只身踏上留学美国的路途 不断的跳级 在...

  • 超出用户预期,奠定信任的基石

    听完猫叔的《牛人变现课(进化版)》,夏花心潮澎湃。“管理预期”这个要点,让她想起了自己的创业故事。 【不要宣传太满...

  • 成绩不好也能去名校,背景提升建奇功!

    ★ ****宣讲项目一:MODEL APEC**** ★项目介绍:亚太青年模拟APEC大会(MODEL APE...

  • TP5分页(5)

    model层项目目录地址:application>common>model>Category.php 控制层项目目...

  • 梦想启航,精彩不断!

    培训总结精彩摘录 First Blood —— 崔琳 团队,乐趣,信心。用首发严谨的文章结构给整个团队奠定了基石,...

网友评论

    本文标题:奠定项目基石:Model

    本文链接:https://www.haomeiwen.com/subject/pnpokctx.html