Django-Models的增删改查

  • 一建立Models类
from app.models import  myclass
class  myclass():
     aa =  models. CharField (max_length=None) 
     bb =  models. CharField (max_length=None) 
     def __unicode__(self):
         return u'%s %s' %(aa,bb)
  • 二.Models 增
#添加一行数据,1 
add = myclass(aa=’wahaha’,bb=’hahawa’ ) 
add.save() #不save无法保存到数据库 
add.id #获取增加的这条数据的ID 
#添加一行数据,2 
# 与方法1不同的是,这里可以不用save就直接插入到数据库
myclass.objects.create(aa=’wahaha’,bb=’hahawa’) 

  • 三.Models 删
#删除表中全部数据 
myclass.objects.all().delete() 
#删除一条aa等于’test’的数据 
myclass.objects.get(aa=’test’).delete() 
#删除多条数据 
myclass.objects.filter(aa=’123’).delete() #过滤出aa字段等于123的都删除
  • 四.Models 改
#更新数据 
a = userinfo.objects.get(cellPhone=’13133333333’) #查询一条你要更新的数据 
a.cellPhone=’3111111111111’ #赋值给你要更新的字段 
a.save() #保存 
#更新多个字段或一个字段 
myclass.objects .get(aa=’123’).update(aa=’321’,bb=”wahaha”) #update可多条 
#更新所有字段 
myclass.objects.all().update(aa=’8888’) #更新所有字段,更新后会显示受影响的条数
  • 五.Models 查
    all():返回模型类对应表格中的所有数据。
    例:查询图书所有信息。
BookInfo.objects.all();--->select * from booktest_bookinfo;

get():返回表格中满足条件的一条数据。
如果查到多条数据,则抛异常:MultipleObjectsReturned
查询不到数据,则抛异常:DoesNotExist
例:查询图书id为3的图书信息。

BookInfo.objects.get(id=3) ---> select * from booktest_bookinfo where id = 3;

filter():参数写查询条件,返回满足条件QuerySet集合数据。
条件格式:
模型类属性名__条件名=值
注意:此处是模型类属性名,不是表中的字段名

1.  判等 exact。
#例:查询编号为1的图书。
BookInfo.object.filter(id=1)
BookInfo.object.filter(id__exact=1)#此处的exact可以省略

2.  模糊查询 like
#例:查询书名包含'传'的图书。contains
BookInfo.objects.filter(btitle__contains=’传’)
#例:查询书名以'部'结尾的图书 endswith 开头:startswith
BookInfo.objects.filter(btitle__endswith=’部’)
BookInfo.objects.filter(btitle__startswith=’天’)

3.  空查询 where 字段名 isnull
#例:查询书名不为空的图书。isnull
BookInfo.objects.filter(btitle__isnull=False)

4.  范围查询 where id in (1,3,5) 
#例:查询编号为1或3或5的图书。In
BookInfo.objects.filter(id__in=[1,3,5])

5.  比较查询 gt lt(less than) gte(equal) lte
#例:查询编号大于等于3的图书。
BookInfo.objects.filter(id__gte=3)

6.  日期查询
#例:查询1980年发表的图书。
BookInfo.objects.filter(bpub_date__year = 1980)
#例:查询1980年1月1日后发表的图。
BookInfo.objects.filter(bpub_date__gt = date(1980,1,1))

7. exclude:返回不满足条件的数据。
#例:查询id不为3的图书信息。
BookInfo.objects.exclude(id=3)
作用:用于类属性之间的比较条件。
使用之前需要先导入:
from django.db.models import F
#例:查询图书阅读量大于评论量图书信息。where bread > bcomment
BookInfo.objects.filter(bread__gt = F(‘bcomment’))
#例:查询图书阅读量大于2倍评论量图书信息。
BookInfo.objects.filter(bread__gt=F(‘bcomment’)*2)
作用:用于查询时的逻辑条件。可以对Q对象进行&|~操作。
使用之前需要先导入:
from django.db.models import Q
#例:查询id大于3且阅读大于30的图书的信息。
BookInfo.objects.filter(id__gt=3, bread__gt=30)
BooInfo.objects.filter(Q(id__gt=3) & Q(bread__gt=3))
#例:查询id大于3或者阅读大于30的图书的信息。
BookInfo.objects.filter(Q(id__gt=3) | Q(bread__gt=30))
#例:查询id不等于3图书的信息。
BookInfo.objects.filter(~Q(id=3))
作用:进行查询结果进行排序。
#例:查询所有图书的信息,按照id从小到大进行排序。
BookInfo.objects.all()order_by('id')
#例:查询所有图书的信息,按照id从大到小进行排序。
BookInfo.objects.all().order_by('-id')
#例:把id大于3的图书信息按阅读量从大到小排序显示;
BookInfo.objects.filter(id__gt=3).order_by('-bread')

你可能感兴趣的:(Django-Models的增删改查)