>>> w=test.objects.all()
>>> print(w)
<QuerySet [<test: test object>, <test: test object>, <test: test object>, <test: test object>, <test: test object>]>
>>> type(w)
<class 'django.db.models.query.QuerySet'>
可以看出來,獲取到的是一個列表,屬于queryset類型,下來獲得username列的值,每一項的值為一個字典:
>>> w=test.objects.all().values('username')
>>> print(w)
<QuerySet [{'username': 'liujiangbu'}, {'username': 'liujianggg'}, {'username': 'liujianggg'}, {'username': 'liuji99angbu'}, {'username': 'liuji99angbu'}]>
.values_list(),獲取到的值為一個元組:
>>> w=test.objects.all().values_list('username')
>>> print(w)
<QuerySet [('liujiangbu',), ('liujianggg',), ('liujianggg',), ('liuji99angbu',), ('liuji99angbu',)]>
也可以傳入多個參數:
>>> w=test.objects.all().values_list('username','depno')
>>> print(w),type(w)
<QuerySet [('liujiangbu', '44444444444433333'), ('liujianggg', 'ttttttt'), ('liujianggg', 'ttttttt'), ('liuji99angbu', 'eddddeeeeee'), ('liuji99angbu', 'edddd
eeeeee')]>
(None, <class 'django.db.models.query.QuerySet'>)
利用上下劃線進行查找:
# 獲取個數
#
# models.Tb1.objects.filter(name='seven').count()
# 大于,小于
#
# models.Tb1.objects.filter(id__gt=1) # 獲取id大于1的值
# models.Tb1.objects.filter(id__lt=10) # 獲取id小于10的值
# models.Tb1.objects.filter(id__lt=10, id__gt=1) # 獲取id大于1 且 小于10的值
# in
#
# models.Tb1.objects.filter(id__in=[11, 22, 33]) # 獲取id等于11、22、33的數據
# models.Tb1.objects.exclude(id__in=[11, 22, 33]) # not in
# contains
#
# models.Tb1.objects.filter(name__contains="ven")
# models.Tb1.objects.filter(name__icontains="ven") # icontains大小寫不敏感
# models.Tb1.objects.exclude(name__icontains="ven")
# range
#
# models.Tb1.objects.filter(id__range=[1, 2]) # 范圍bettwen and
# 其他類似
#
# startswith,istartswith, endswith, iendswith,
# order by
#
# models.Tb1.objects.filter(name='seven').order_by('id') # asc 從小到大
# models.Tb1.objects.filter(name='seven').order_by('-id') # desc 從大到小
# limit 、offset
#
# models.Tb1.objects.all()[10:20]
# group by
from django.db.models import Count, Min, Max, Sum
# models.Tb1.objects.filter(c1=1).values('id').annotate(c=Count('num'))
# SELECT "app01_tb1"."id", COUNT("app01_tb1"."num") AS "c" FROM "app01_tb1" WHERE "app01_tb1"."c1" = 1 GROUP BY "app01_tb1"."id"