日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django查询表记录的十三种方法

發(fā)布時間:2025/4/16 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django查询表记录的十三种方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

django查詢表記錄的十三種方法

all() 結(jié)果為queryset類型

>>> models.Book.objects.all() <QuerySet [<Book: Book object>, <Book: Book object>, <Book: Book object>]>

filter() 條件查詢(它下面也有很多種方法,見最下面)

>>> ret = models.Book.objects.filter(id=5) >>> ret <QuerySet [<Book: Book object>]>

get() 得到的是一個model對象,有且只能有一個
會出現(xiàn)兩種報錯

  • 1 查不到數(shù)據(jù)會報錯 :Book matching query does not exist.
  • 2 返回值超過一個就報錯 :returned more than one Book -- it returned 13!
>>> ret = models.Book.objects.get(id=5) >>> ret <Book: Book object>

exclude() 排除

  • object能夠調(diào)用,models.Book.objects.exclude(book_name__startswith='活')
  • queryset類型數(shù)據(jù)能夠調(diào)用。
  • >>> ret = models.Book.objects.all() >>> ret.exclude(id=5) <QuerySet [<Book: Book object>, <Book: Book object>]>

    order_by() 排序

    models.Book.objects.all().order_by('-price','id') #類似于mysql種的order by price desc,id asc;

    reverse() 反轉(zhuǎn)

    models.Book.objects.all().order_by('id').reverse() # 數(shù)據(jù)排序之后才能反轉(zhuǎn)

    count() 計數(shù),統(tǒng)計返回結(jié)果的數(shù)量

    >>> ret = models.Book.objects.all().count() >>> ret 3

    first() 返回第一條數(shù)據(jù),結(jié)果是model對象類型

    >>> ret = models.Book.objects.all() >>> ret.first() <Book: Book object> >>> ret.first().id 5

    last() 返回最后一條數(shù)據(jù),結(jié)果是model對象類型

    >>> ret = models.Book.objects.all() >>> ret.last() <Book: Book object> >>> ret.last().id 11

    exists() 判斷返回結(jié)果集是不是有數(shù)據(jù)

    >>> ret = models.Book.objects.filter(id=999).exists() >>> ret False >>> ret = models.Book.objects.filter(id=11).exists() >>> ret True

    values() (返回的queryset,里面是字典類型數(shù)據(jù))

    >>> ret = models.Book.objects.all().values('id','book_name') >>> ret <QuerySet [{'id': 5, 'book_name': '1'}, {'id': 6, 'book_name': '2'}, {'id': 11, 'book_name': '23'}]>

    values_list(返回的queryset,里面是數(shù)組類型數(shù)據(jù))

    >>> ret = models.Book.objects.all().values_list('id','book_name') >>> ret <QuerySet [(5, '1'), (6, '2'), (11, '23')]>

    調(diào)用values或者values_list的是objects控制器,那么返回所有數(shù)據(jù)

    >>> ret = models.Book.objects.values() >>> ret <QuerySet [{'id': 5, 'book_name': '1', 'price': 2.0, 'shijian': '2018-03-22', 'press': 'admin'}, {'id': 6, 'book_name': '2', 'price': 1234.0, 'shijian': '2013-3-2', 'press': 'sdf'}, {'id': 11, 'book_name': '23', 'price': 11.0, 'shijian': '2019-09-10', 'press': '234'} ]>

    distinct() 去重,配置values和values_list來使用

    >>> models.Book.objects.all().values('book_name').distinct() <QuerySet [{'book_name': '1'}, {'book_name': '2'}, {'book_name': '23'}]>

    filter雙下劃線查詢

    **__in** price值等于這三個里面的任意一個的對象

    Book.objects.filter(price__in=[100,200,300])

    **__gt** 大于

    >>> ret = models.Book.objects.filter(price__gt=1233) >>> ret.values() <QuerySet [{'id': 6, 'book_name': '2', 'price': 1234.0, 'shijian': '2013-3-2', 'press': 'sdf'}]>

    **__gte**大于等于

    >>> ret = models.Book.objects.filter(price__gte=2) >>> ret.count() 3

    lt 等于

    >>> ret = models.Book.objects.filter(price__lt=1234) >>> ret.count() 2

    lte 小于等于

    >>> ret = models.Book.objects.filter(price__lte=1234) >>> ret.count() 3

    **__range** 大于等于35,小于等于38

    >>>ret = models.Book.objects.filter(price__range=[35,38]) >>>ret.count() 3

    **__contains** 包含這個字符串的數(shù)據(jù)

    >>> ret = models.Book.objects.filter(book_name__contains='2') >>> ret.values() <QuerySet [{'id': 6, 'book_name': '2', 'price': 1234.0, 'shijian': '2013-3-2', 'press': 'sdf'}, {'id': 11, 'book_name': '23', 'price': 11.0, 'shijian': '2019-09-10', 'press': '234'}]>

    **__icontains** 不區(qū)分大小寫

    ret = models.Book.objects.filter(book_name__icontains='py')

    **__startswith** 以什么開頭 -- endswith(以什么結(jié)尾) -- istartswith(不區(qū)分大小寫)

    >>> ret = models.Book.objects.filter(book_name__startswith='2') >>> ret.values() <QuerySet [{'id': 6, 'book_name': '2', 'price': 1234.0, 'shijian': '2013-3-2', 'press': 'sdf'}, {'id': 11, 'book_name': '23', 'price': 11.0, 'shijian': '2019-09-10', 'press': '234'}]>

    **__year** 查詢年 **__month** 月

    ret = models.Book.objects.filter(publish_date__year='2018')

    **__isnull** 字段值為空的數(shù)據(jù)

    models.Book.objects.filter(publish_date__isnull=True)

    轉(zhuǎn)載于:https://www.cnblogs.com/alex3174/p/11608374.html

    總結(jié)

    以上是生活随笔為你收集整理的django查询表记录的十三种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。