Django開發之路 二(django的models表查詢)

django的models表查詢

  1、單表查詢

(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

  2、雙下劃線查詢

(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等於十一、2二、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之類

  3、跨表查詢

  一、表結構

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

  二、查詢

userinfo_obj = UserInfo.objects.all()

  查詢到的是裏面包含多個UserInfo對象,取第一個UserInfo對象則python

userinfo_obj[0]

  取第一個對象的值則爲數據庫

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

  三、一對多操做

  建立數據一步到位django

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

  四、反向查詢

  反向查詢其餘表的數據雙下劃線__很重要!如查詢‘普通用戶’用user_type__caption便可spa

q = UserInfo.objcets.filter(user_type__caption='普通用戶')
相關文章
相關標籤/搜索