1. 程式人生 > >Django開發之路 二(django的models表查詢)

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

django nds 有一個 clas span pytho mod 返回 length

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=普通用戶)

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