Django开发之路 二(django的models表查询)

2018-07-04 02:16:11来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

django的models表查询

  一、单表查询

(1) all():                 查询所有结果    # 返回的QuerySet类型
 
(2) filter(**kwargs):      它包含了与所给筛选条件相匹配的对象   #返回的QuerySet类型
 
(3) get(**kwargs):         返回与所给筛选条件相匹配的对象,返回结果有且只有一个,  #返回的models对象
                             如果符合筛选条件的对象超过一个或者没有都会抛出错误。
 
(4) exclude(**kwargs):     它包含了与所给筛选条件不匹配的对象  #返回的QuerySet类型 
 
(5) values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列  #返回的QuerySet类型 
                           model的实例化对象,而是一个可迭代的字典序列
 
(6) values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列  #返回的QuerySet类型 
 
(7) order_by(*field):      对查询结果排序  
 
(8) reverse():             对查询结果反向排序
 
(9) distinct():            从返回结果中剔除重复纪录
 
(10) count():              返回数据库中匹配查询(QuerySet)的对象数量。
 
(11) first():              返回第一条记录  #返回的models对象
(12) last(): 返回最后一条记录  #返回的models对象
(13) exists(): 如果QuerySet包含数据,就返回True,否则返回False

  二、双下划线查询

(1)models.Tb1.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值
 
(2)models.Tb1.objects.filter(id__in=[11, 22, 33])   # 获取id等于11、22、33的数据
(3)models.Tb1.objects.exclude(id__in=[11, 22, 33])  # not in
   
(4)models.Tb1.objects.filter(name__contains="ven") #字段包含指定值的
(5)models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感  

(6)models.Tb1.objects.filter(id__range
=[1, 2])    # 范围bettwen and

(7)还有startswith,istartswith, endswith, iendswith之类

  三、跨表查询

  1、表结构

class Something(models.Model):
    name = models.CharField(max_length=32)


class UserType(models.Model):
    caption = models.CharField(max_length=32)
    s = models.ForeignKey('Something',on_delete=models.CASCADE)

class UserInfo(models.Model):
  user
= models.CharField(max_length=32)
  pwd
= models.CharField(max_length=32)
  user_type
= models.ForeignKey('UserType') # user_type_id

  2、查询

userinfo_obj = UserInfo.objects.all()

  查询到的是里面包含多个UserInfo对象,取第一个UserInfo对象则

userinfo_obj[0]

  取第一个对象的值则为

id = userinfo_obj[0].user.id
user = userinfo_obj[0].user.user
pwd = userinfo_obj[0].user.pwd

  3、一对多操作

  创建数据一步到位

UserInfo.objects.create(user='abj','pwd'='111',user_type_id=3)

  4、反向查询

  反向查询其他表的数据双下划线__很重要!如查询‘普通用户’用user_type__caption即可

q = UserInfo.objcets.filter(user_type__caption='普通用户')

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:mac利用套件管理工具homebrew正确地同时安装python2.7和python3

下一篇:python 哈姆雷特 字数统计 词云