码迷,mamicode.com
首页 > 编程语言 > 详细

python django框架学习笔记(三)--大结局

时间:2016-11-18 14:15:43      阅读:414      评论:0      收藏:0      [点我收藏+]

标签:field   delete   序列   函数   逻辑   访问   逻辑控制   日期   return   

一、数据库同步操作技巧

  1、认识一个目录

  目录名:migatations

  作用,用来存放通过makemigrations命令生成的数据库脚本。app目录下必须要有migrations目录切目录下必须要有__init__.py才能正常的使用数据库同步功能。

  2、认识一张数据表(django_migrations)

  表中的字段:

  app:app名字

  name:脚本的文件名称

  applied:脚本执行时间

  3、数据库相关的命令

  flush:清空数据库-恢复数据库到最初的状态

  makemigrations:生成数据库同步的脚本

  migrate:同步数据库

  showmigrations:查看生成的数据库同步脚本

  sqlflush:查看生成清空数据库的脚本

  sqlmigrate:查看数据库同步的SQL语句

  一些笨拙的解决办法:开发过程中,数据库同步误操作之后,难免会遇到后面不能同步成功的情况,解决办法一是分析生成的数据库脚本和django_migrations中的同步记录是否匹配,另一个简单粗暴的方法就是把migrations目录下的脚本(除__init__.py)之外全部删掉,再把数据库删掉之后创建一个新的数据库,数据库同步操作再重新做一遍。(慎用)


二、ORM常用操作

  1、增加

  create和save方法 

  objects:这是model默认管理器,create是这个管理器里面的方法

  插入主外键关系的时候,可以用对象的方式,也可以直接以关联id的方式。

  插入多对多管理的时候要分布操作。

  save方法是model对象的方法 

  2、修改

  update和save方法

  update方法是QuerySet对象的方法

    3、查询(惰性机制)

  所谓惰性机制:Publisher.objects.all()只是返回了一个QuerySet(查询结果集对象),并不会马上执行sql,而是当调用QuerySet的时候才执行

  4、删除

  delete方法

  django中删除模式是级联删除


 

三、查询常用API

  django.db.models.query.QuerySet

  QuerySet的特点:

  1、是可迭代的。2、可切片

  

  查询相关的API:

  1、get(**kwargs):返回与所给的筛选条件相匹配的对象,返回结果有且只有一个。如果符合筛选条件的对象超过一个,就会抛出MultipleObjectsReturned一场,如果没有找到符合筛选条件的对象,就会抛出DoesNotExist异常.

  2、all():查询所有结果

  3、filter(**kwargs):它包含了与所给的筛选条件相匹配的对象。

  4、exclude(**kwargs):它包含那些与所给筛选条件

  5、order_by(*fields):对查询结果排序

  6、reverse():对查询结果反向排序

  7、distinct():从返回结果中剔除重复记录

  8、values(*fields):返回一个ValuesQuerySet--一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列。

  9、values_list(*fields):它与values()非常相似,只不过后者返回的结果是字段序列,而values_list()返回的结果是元祖序列。

  10、count():返回数据库中匹配查询(QuerySet)的对象数量

  11、first():返回第一条记录,等价于[::-1][0]

  12、last():返回最后一条记录,等价于[::-1][0]

  13、exist():如果QuerySet包含有数据,就返回True,否则返回False。

  更多:http://docs.djangoproject.com/en/1.9/ref/models/querysets/

 


 

  多表查询技巧:

  _:两个下划线可以生成连接查询,查询关联的字段信息

  _set:提供了对象访问相关联表数据的方法。但是这种方法只能是相关类访问定义了关系的类(主键类访问外键类)

  聚集查询和分组查询:

  1、annotate(*args,**kwargs):可为QuerySet中每个对象添加注解。可以通过计算查询结果中每个对象所关联的对象集合,从而得出总计值(也可以是平均值或总和,等等)用于分组查询。

  2、aggregate(*args,**kwargs):通过对QuerySet进行计算,返回一个聚合值的字段。aggregate()中每个参数都指定一个包含在字段中的返回值。用于聚合查询。

  聚合函数(Aggregation Functions):

  所在位置:Django.db.models

  1、Avg:返回所给字段的平均值

  2、Count:根据所给关联字段返回被关联model的数量

  3、Max:返回所给字段的最大值

  4、Min:返回所给字段最小值

  5、Sum:计算所给字段值的总和

  

  使用原生SQL:

  1、extra:结果集修改器,一种提供额外查询参数的机制。

  2、raw:执行原始SQL并返回模型实例

  3、直接执行自定义SQL

  (第三种方式完全不依赖model,前面两种方式还要依赖于model)

 


 

四、常用模版标签及过滤器

  1、模版的组成

  HTML代码+逻辑控制代码

  2、逻辑控制代码的组成

  (1)变量(使用双大括号来引用变量)

  {{var_name}}

   (2)标签(tag)的使用(使用大括号和百分号的组成来标识使用tag)

    {%load staticfiles%}

   (3)过滤器(filter)的使用
    {{ship_date|date:"Fj,Y"}},ship_date变量传给data过滤器,data过滤器通过使用“Fj,Y”这几个参数来格式化日期数据。“|”代表类似Unix命令中的管道操作。

  

  

python django框架学习笔记(三)--大结局

标签:field   delete   序列   函数   逻辑   访问   逻辑控制   日期   return   

原文地址:http://www.cnblogs.com/xz1024/p/6071816.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!