ORM:

class Book(models.Model):
 title=models.CharFiled(max_length=32)

类-----------------表    #  Book------- app01_book
        属性变量-----------字段  #  title------ title
        属性对象-----------约束     #  models.CharFiled(max_length=32)
        类实例对象---------表记录

单表操作
model的元类信息:

Book_meta.verbose_name "书籍" 用来在django中标识

Book_meta.model_name book 看表名小写

Book._meta.app_label 'app01' 看项目名称

class Book(models.Model):
                    title=models.CharField(max_length=32,verbose_name="书籍名称")

def __str__(self):
                        return self.title
                     class Meta:
                            app_label="APP01"
                            db_table="app01book"
                            unique_together=["title","price"] 联合唯一
                            verbose_name="书籍"
                            ordering=["price"]

class Book(models.Model):
                     id=models.AutoField(primary_key=True)
                     title=models.CharField(max_length=32)
                     state=models.BooleanField()
                     pub_date=models.DateField()
                     price=models.DecimalField(max_digits=8,decimal_places=2)
                     publish=models.CharField(max_length=32)
                           
           
           更多参数:
                    (1)null
 
                    如果为True,Django 将用NULL 来在数据库中存储空值。 默认值是 False.
                    
                        blank
                    
                    如果为True,该字段允许不填。默认为False。
                    要注意,这与 null 不同。null纯粹是数据库范畴的,而 blank 是数据验证范畴的。
                    如果一个字段的blank=True,表单的验证将允许该字段是空值。如果字段的blank=False,该字段就是必填的。
                    
                    (2)default
                    
                    字段的默认值。可以是一个值或者可调用对象。如果可调用 ,每有新对象被创建它都会被调用。
                    
                    (3)primary_key
                    
                    如果为True,那么这个字段就是模型的主键。如果你没有指定任何一个字段的primary_key=True,
                    Django 就会自动添加一个IntegerField字段做为主键,所以除非你想覆盖默认的主键行为,
                    否则没必要设置任何一个字段的primary_key=True。
                    
                    (4)unique
                    
                    如果该值设置为 True, 这个数据字段的值在整张表中必须是唯一的
                    
                    (5)choices
                    由二元组组成的一个可迭代对象(例如,列表或元组),用来给字段提供选择项。 如果设置了choices ,默认的表单将是一个选择框而不是标准的文本框,<br>而且这个选择框的选项就是choices 中的选项。

数据库配置:
                DATABASES = {
                    'default': {
                        'ENGINE': 'django.db.backends.mysql',
                        'NAME':'bms',           # 要连接的数据库,连接前需要创建好
                        'USER':'root',        # 连接数据库的用户名
                        'PASSWORD':'',        # 连接数据库的密码
                        'HOST':'127.0.0.1',       # 连接主机,默认本级
                        'PORT':3306            #  端口 默认3306
                    },
                    
                    'app01': {
                        'ENGINE': 'django.db.backends.mysql',
                        'NAME':'bms',           # 要连接的数据库,连接前需要创建好
                        'USER':'root',        # 连接数据库的用户名
                        'PASSWORD':'',        # 连接数据库的密码
                        'HOST':'127.0.0.1',       # 连接主机,默认本级
                        'PORT':3306            #  端口 默认3306
                    },
                    
                }
            
            针对每一个注册app下的models.py创建对应的表结构            
                python manage.py makemigrations
                python manage.py migrate

添加记录:
                book_obj=Book.objects.create(title="python葵花宝典",state=True,price=100,publish="苹果出版社",pub_date="2012-12-12")
                
                book_obj=Book(title="python葵花宝典",state=True,price=100,publish="苹果出版社",pub_date="2012-12-12")
                book_obj.save()
             
           查询表纪录:
                <1> all():                  查询所有结果
 
                <2> filter(**kwargs):       它包含了与所给筛选条件相匹配的对象
                  
                <3> get(**kwargs):          返回与所给筛选条件相匹配的对象,返回结果有且只有一个,
                                            如果符合筛选条件的对象超过一个或者没有都会抛出错误。
                  
                <4> exclude(**kwargs):      它包含了与所给筛选条件不匹配的对象
                
                <5> order_by(*field):       对查询结果排序
                  
                <6> reverse():              对查询结果反向排序
                  
                <8> count():                返回数据库中匹配查询(QuerySet)的对象数量。
                  
                <9> first():                返回第一条记录
                  
                <10> last():                返回最后一条记录
                  
                <11> exists():              如果QuerySet包含数据,就返回True,否则返回False

,<12> values

返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列
                                            model的实例化对象,而是一个可迭代的字典序列

Book.objects.filter(price__gt=100).values("title","price")

queryset=[]

for obj in Book.objects.filter(price__gt=100):

queryset.qppend({

"title:obj.title,

price:obj.price"})

<13> values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列

Book.objects.filter(price__gt=100).values("title","price")
                                            '''
                                            queryset=[]
                                            for obj in Book.objects.filter(price__gt=100):
                                                queryset.append((
                                                    obj.title,
                                                    obj.price
                                                
                                                ))

<14> distinct():            从返回结果中剔除重复纪录

基于双下划线的模糊查询
                Book.objects.filter(price__in=[100,200,300])
                Book.objects.filter(price__gt=100)
                Book.objects.filter(price__lt=100)
                Book.objects.filter(price__range=[100,200])
                Book.objects.filter(title__contains="python") 在里面
                Book.objects.filter(title__icontains="python") 不区分大小写在里面
                Book.objects.filter(title__startswith="py")
                Book.objects.filter(pub_date__year=2012)
                Book.objects.filter(pub_date__year__gt=2012)
            
删除表纪录
                Book.objects.filter(price__in=[100,200,300]).delete()  quertset
                Book.objects.get(pk=1).delete()  model对象
                 
            
            修改表纪录
                # 方式1
                Book.objects.filter(title__startswith="py").update(price=120)  quertset
                # 方式2
                book=Book.objects.filter(title__startswith="py").first()
                book.price=1000
                book.save()

django 基础进阶ORM COOKIE的更多相关文章

  1. django 基础进阶ORM 2

    1.多表操作 添加记录: 针对一对多 book_obj=Book.objects.create(title="python葵花宝典",price=100,publishDate=& ...

  2. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

  3. day 62.3 Django基础八之cookie和session

    Django基础八之cookie和session   本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx ...

  4. day 73 Django基础八之cookie和session

      Django基础八之cookie和session   本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 x ...

  5. Django基础六之cookie和session

    Django基础六之cookie和session 目录 Django基础六之cookie和session 1. cookie和session介绍 1.1 cookie 简介 1.2 cookie的缺陷 ...

  6. Django基础学习之Cookie 和 Sessions 应用

    在Django里面,使用Cookie和Session看起来好像是一样的,使用的方式都是request.COOKIES[XXX]和request.session[XXX],其中XXX是您想要取得的东西的 ...

  7. django基础 -- 5. ORM 数据库操作

    一. ORM 对象关系映射 类   ------   表 类对象   ------   记录 类属性   ------   字段 二.  连接数据库配置 1.在  setting.py 文件中重新设置 ...

  8. Django基础八之cookie和session

    一 会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器 ...

  9. 10.Django基础八之cookie和session

    一 会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器 ...

随机推荐

  1. docker的一些常用操作

    镜像:一个打包好的应用,还有应用运行的系统.资源.配置等容器:镜像的实例,一个镜像可以有一个或多个实例(容器)对docker容器的变更时写到容器的文件系统的,而不是写到docker镜像中的,可以用一个 ...

  2. CF908G New Year and Original Order(DP,数位 DP)

    又一次降智…… (数位 DP 原来可以写这么短,学到了) 问题可以转化为求数位中 $\ge k$ 的有恰好 $j$ 位的数的个数.设为 $c_{j,k}$. 那么答案就是:(考虑把 $k$ 的贡献拆开 ...

  3. 100教程-100jc.cn

    个人编程笔记网站(持续更新) http://100jc.cn

  4. Linux常用命令:fdisk mkfs mount umount fstab实现自动挂载

    写在前 记录点常用命令,fdisk mkfs mount和umount,以及fstab实现自动挂载 fdisk fdisk主要用于操作硬盘的分区表.分区,下面简单记一点最常用的部分 查看当前系统识别到 ...

  5. Java中如何获取一个类中泛型的实际类型

    本文链接:https://blog.csdn.net/kuuumo/article/details/83021158   _______________________________________ ...

  6. C#/.Net操作MongoDBHelper类

    先 NuGet两个程序集 1:MongoDB.Driver.   2:MongoDB.Bson namespace ConsoleApp1{ /// <summary> /// Mongo ...

  7. mvc中ViewBag返回数组如何循环显示数据

    直接在for循环里面定义出viewbag @for (int i = 0; i < ViewBag.permission.Count; i++) { var permission = ViewB ...

  8. response.Close、response.End、response.Flush区别(下载文件)

    今天在做文件下载功能用到的是response的方法,首先我们要了解这些方法的作用. 1.response.write():将信息写入http响应输出流. 2.response.Flush:向客户端发送 ...

  9. MySql5.7配置文件my.ini 设置 my.ini文件路径

    mysql配置文件my-default.ini  my.ini修改后重启无效,原来是路径错了,记录一下: windows操作系统下: 1. 由于我们使用MySql 时,需要修改mysql 的 my.i ...

  10. 37.前台js登陆加密分析

    开篇 由于现在的登陆接口如果明文传输的话,容易被暴力破解,越来越多的网站选择了前台js加密的方式,像这样: 或者这样: 枯了,对渗透造成一定的影响 本篇文章将系统的讲述使用Python对前台js加密爆 ...