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. day 29

    Let the dead have the immortality of fame, but the living the immortality of love. 让逝者拥有不朽的荣誉,让生者拥有不 ...

  2. Codeforces Round #576 (Div. 1)

    Preface 闲来无事打打CF,就近找了场Div1打打 这场感觉偏简单,比赛时艹穿的人都不少,也没有3000+的题 两三个小时就搞完了吧(F用随机水过去了) A. MP3 题意不好理解,没用翻译看了 ...

  3. Manjaro Linux安装后第一件事

    环境:Manjaro KDE 使用中科大源  USTC Mirror 当然也可以勾选所有中国镜像源 谷歌加上云pinyin拼音输入法,不亚于搜狗 fcitx-qt5 kcm-fcitx  (confi ...

  4. Django性能优化的几种方法

    1.一次性取出你所需要的数据 单一动作,需要多次连接数据库里的时候,最好一次性取出所有需要的数据,减少连接数据库的次数.此类需求推荐使用QuerySet.select_related()和prefet ...

  5. for...in 、for...of 、forEach 的区别

    无论是for…in还是for…of语句都是迭代一些东西.它们之间的主要区别在于它们的迭代方式. 1.for…in 语句以原始插入顺序迭代对象的可枚举属性.2.for…of 语句遍历可迭代对象定义要迭代 ...

  6. Qt Quick 多媒体 - 播放音乐和视频

    MediaPlayer 是 QML 提供的核心多媒体类,可以播放音频.视频.要使用 MediaPlayer,需要引入 QtMultimedia 模块,在 QML 文档的开始加入 "impor ...

  7. 一个网页从输入URL到页面加载完成的过程中都发生了什么事情?

    这是一个前端的经典面试题,很多大公司面试时都会被问及,涉及的面也是非常多. 一般会经历以下几个过程: 1.首先,在浏览器地址栏中输入url 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中 ...

  8. EOF的意义及用法

    c/c++ 中EOF的意义及用法 EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束. 在微软的DOS和Windows中,读取数据时终端不会产生EOF.此时,应用程序知道数 ...

  9. springboot打war包汇总

    概述 第一次用maven工具打war包,出现各种各样的问题,做个问题记录方便下次查看 maven 一开始用的maven是springboot默认的,在.m2下,要打包时才发现没有mvn指令.索性自己就 ...

  10. STMP发送邮件(C#)

    记录一下使用SMTP协议发送邮件 public void Mail() { try { System.Net.Mail.SmtpClient client = new System.Net.Mail. ...