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. [LeetCode] 187. Repeated DNA Sequences 求重复的DNA序列

    All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...

  2. SpringCloud微服务实现生产者消费者以及ribbon负载均衡

    一.SpringCloud_eureka_server 1.导入依赖 <dependencies> <dependency> <groupId>junit</ ...

  3. sonatype nexus安装教程

    1. 安装nexus前需要先安装maven.(详见jdk安装教程)2. 将nexus-2.0.2.rar放到d:\teamwork中,点击右键,解压到当前文件夹中.其中包含两个文件夹:nexus,so ...

  4. oracle--10.2.0.3升级到11.2.0.4

    一,环境 01,待升级的系统 升级仅支持10.2.0.2版本之后的系统,如果不是,请把10G升级至高版本! 本次实验环境10.2.0.3 02,挂载11G系统 03,升级须知 1) 做好备份 二,DB ...

  5. Java中HashMap和TreeMap的区别

    什么是Map集合在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value.这就是我们平时说的键值对. HashMap ...

  6. .NET Core:过滤器

    过滤器的作用是在 Action 方法执行前或执行后做一些加工处理.使用过滤器可以避免Action方法的重复代码.功能上更贴合业务的使用过滤器. 在Startup中的ConfigureServices方 ...

  7. asp.net core ModelState 模型状态验证扩展类

    using DMS.Common.BaseResult; using Microsoft.AspNetCore.Mvc.ModelBinding; using System; using System ...

  8. 中文情感分析——snownlp类库 源码注释及使用

    最近发现了snownlp这个库,这个类库是专门针对中文文本进行文本挖掘的. 主要功能: 中文分词(Character-Based Generative Model) 词性标注(TnT 3-gram 隐 ...

  9. Javascript Object常用方法总结

    Object.keys方法 Object.keys方法是JavaScript中用于遍历对象属性的一个方法 .它传入的参数是一个对象,返回的是一个数组,数组中包含的是该对象所有的属性名. 如: var ...

  10. Java程序使用Alpine Linux报错java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy解决

    报错内容 Caused by: java.lang.UnsatisfiedLinkError: /tmp/snappy-1.1.7-4a4b576a-c34c-481e-b6ac-9b4abacb11 ...