码迷,mamicode.com
首页 > 其他好文 > 详细

Django框架之模型

时间:2017-10-14 18:45:32      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:hat   web   file   filter   translate   自己   col   超过   行迁移   

                                                                                                                                                              出品人:灰度

模型详解(上)

在讲解之前先来说下MVC框架,M指的是模型(model)的意思是应用程序的核心,v指的是视图(view)主要用来显示内容,C呢就是控制器(Controller)主要用来控制输入.MVC是一种编写WEB应用的一种设计模式,他主要的目的是解耦,怎么理解这就话,其实就是将业务代码和视图代码分离,由控制器来进行调用进行数据的输入输出操作。在Django中不叫MVC叫MVT(其实是一样的)。


1.理解什么是ORM模型

首先理解什么是ORM,简单来说就是通过代码来操作数据库,通过对象来映射对应的sql代码,无需编写sql语句,自动生成数据库表,它主要提供是三个功能:(1)允许我们通过面向对象的方式来操作数据库(2)根据我们自己设计的模型,自动在数据库中生成我们需要的数据表(3)可以很方便的配置,让我们对数据库进行切换操作

2.这里我们拿mysql为例,Django默认使用自带的sqlite3数据库,我们来修改成我们自己的,修改settings.py文件,找到DATABASES

技术分享

将其修改成下面的数据库

技术分享

在__init__.py中添加mysql驱动,前提是已经安装了pymysql驱动

技术分享

3.模板中的字段属性

在模板中定义属性有三条规则

(1)不能使用python 的关键字  例如:os

(2)不能使用双下划线,Django对双下划线敏感,涉及到Django查询问题

(3)定义属性时,必须指定属性的类型

4.说道类型,下面列举下Django中的类型


  • BooleanField:布尔字段,值为True或False。

  • CharField(max_length=字符长度):字符串

  • TextField:大文本字段,一般超过4000个字符时使用

  • IntegerField:整数

  • FloatField:浮点数

  • DateField日期

  • TimeField:时间

  • DateTimeField:日期时间

  • FileField:上传文件字段。

  • ImageField:继承于FileField,对上传的内容进行校验,确保是有效的图片。

  • DecimalField(max_digits=None, decimal_places=None):十进制浮点数。

        参数max_digits表示总位数。

        参数decimal_places表示小数位数


5.字段属性约束-------选项

  • null:如果为True,表示允许为空,默认值是False。

  • blank:如果为True,则该字段允许为空白,默认值是False。

        * 对比:null是数据库范畴的概念,blank是表单验证证范畴的。

  • db_column:字段的名称,如果未指定,则使用属性的名称。

  • db_index:若值为True, 则在表中会为此字段创建索引,默认值是False。

  • default:默认值。

  • primary_key:若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用。

  • unique:如果为True, 这个字段在表中必须有唯一值,默认值是False。

下面让我们写个模型吧

技术分享

执行迁移命令

  1. python manage.py makemigrations    #在终端项目下执行
  1. python manage.py migrate    #生成数据表

6.数据库相关操作

在这里,小编说声抱歉写的不够细,具体的看说明文档吧,我已经将网址写在这里,写的还是很详细的

参考网址:http://python.usyiyi.cn/translate/django_182/topics/db/queries.html

  一、  查询

         1、单条数据查询get()

        例如查询刚才我们创建的表中的数据

            HeroInfo.objects.get(name=‘lisi‘)

        2、查询表中所有的数据all()

            HeroInfo.objects.all()     # 这里说下它的返回值类型是QuerySet(查询集)

         3、过滤器查询filter()   #  可以理解为where

            HeroInfo.objects.filter(name=‘lisi‘)相当于 HeroInfo.objects.all().filter(name=‘list‘)

        4、模糊查询contains     结尾 endswith  开头startswith

            HeroInfo.objects.get(name__contains=‘li‘)     相当于 select  ....from HeroInfo where name like ‘%li%‘       

        5.空查询 isnull

        6.比较查询  大于get   小于let

        7.取反  exclude

二、引用Q对象查询复杂的语句

        通常Q对象用来查询逻辑条件时用到   not and or

    提示下先引入from django.db.models import Q

       Q 对象可以使用& 和| 操作符组合起来

    Q(question__startswith=‘Who‘) | Q(question__startswith=‘What‘)

    F对象用于对象间的比较

BookInfo.objects.filter(bread__gt=F(‘bcomment‘))


            










Django框架之模型

标签:hat   web   file   filter   translate   自己   col   超过   行迁移   

原文地址:http://www.cnblogs.com/syketw23/p/7667904.html

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