Django中数据处理及get和filter用法

DJango操作数据

  增

          1.create     

                       dic = {

                                  ‘user’:’student’,

                                  ‘pwd’:’123456’

                                  }

                       class.objects.create(dic)

            2. 赋值

                   b = class()

                   b.user = ‘student’

                   b.pwd = ‘123456’

                   b.save()   将数据保存

  删

       Class.objects.filter(一个或多个字段).delete()

 改

       1. update

               class.object.filter(一个或多个字段).update(字段=新值)

        2. get          

               b = class.objects.get(字段)

               b.price = 999 (b.字段=新值)

               b.save()

  查

     获取个数

          Tb1.objects.filter(name='seven').count()

     范围

           Tb1.objects.filter(id__gt=1)              # 获取id大于1的值

           Tb1.objects.filter(id__lt=10)             # 获取id小于10的值

            Tb1.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值

            Tb1.objects.filter(id__in=[11, 22, 33])   # 获取id等于11、22、33的数据

            Tb1.objects.exclude(id__in=[11, 22, 33])  # not in

                         __exact 精确等于 like ‘aaa’

                         __iexact 精确等于 忽略大小写 ilike ‘aaa’

                         __contains 包含 like ‘%aaa%’

                        __icontains 包含 忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains。

                       __gt 大于

                       __gte 大于等于

                       __lt 小于

                       __lte 小于等于

                       __in 存在于一个list范围内

                       __startswith 以…开头

                       __istartswith 以…开头 忽略大小写

                       __endswith 以…结尾

                       __iendswith 以…结尾,忽略大小写

                       __range 在…范围内

                       __year 日期字段的年份

                       __month 日期字段的月份

                       __day 日期字段的日

                       __isnull=True/False

                      __isnull=True 与 __exact=None的区别

          排序 order_by

               Tb1.objects.filter(name='seven').order_by('id')    # asc

               Tb1.objects.filter(name='seven').order_by('-id')   # desc

   

get

         返回的是一个对象。结果是字典形式,不存在则报错,存在多个也报错

filter

         返回结果为queryset,实质上就是满足filter条件的对象的集合(不是数据类型的集合),其结果的表现形式是列表,单独更具体的获取其中的对象时可以用下表来操作。类似[ object1, object2,object3, object4,object5, object6 ·········· ] )表格就映射成一个类,里面的每一行记录就是一个对象,get方法就是获取其中的一个元素,获取的是满足条件的某一个个体,而filter类似于高级函数filter,其结果是筛选出符合条件的一个或多个(至少一个),其得到的结果依然是一个群组概念

 

得到值

            user = class.object.all()     也可不获取所有 user = class.object.all()[:10] 或  user = class.object.filter(id__lt=10)得到id小于10                                                                 的queryset

             lst = user.values_list(‘id’,’name’)  得到的是一个列表,里面嵌套了列表(这个列表是queryset类型

                        列: [[1,’wang’], [2,’li], [3,’zhao]]

                               如果要取值的话得先将它转换成列表: list(lst),这样的话就将queryset类型装换成了list类型了

             lst = user.vaules(‘id’,’name’)  得到的是一个列表,里面嵌套字典,字典格式

                        列: [{‘id’:1,’name’:’wang’}, {‘id’:2,’name’:’li},{‘id’:3,’name’:’zhao},]

get  

           user = class.object.get(id=1)

                    直接user.属性即可,因为get得到的一个对象,就一个值

           id_value = user.id  

                   列:1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值