Django中object.all

前言

先拋出一個問題。銀行就相當于一個數據庫,你去銀行取錢存錢辦卡銷卡,是你告訴銀行柜員方便還是你自己去操作電腦辦卡取卡方便?(你還不一定會,假設自動存款機還沒發明),object在數據庫中就相當于銀行里得銀行柜員。

步入正題:

在django中的view.py中,我們可能回經常見到? book_set= Book.objects.all(),book_list = Book.objects.get()?

讓我們疑惑的問題是,objects是個什么東西,book_set 和book_list 又是個神馬東西?

object是Manager類型的對象,定義在from django.db import models中,是默認生成的,也就是objects = Modes.Manage() 。用途是數據庫和模型對象交互的接口(api)。book_set返回的是個集合,book_list返回的是個列表。book =?Book.objects.all(),這個翻譯成銀行得話就是,一個叫BOOK得人來到銀行,通過一個名叫objects得柜員,查詢BOOK得銀行余額和銀行卡信息,結果得到一個queryset對象

在book =BOOK.objects.get()或者book = BOOK.objects.all()中

  • BOOK是類名,就是你在model中創建的類
  • objects是django默認的管理器對象,就是剛才的比喻中的銀行柜員,幫你完成各種操作。
  • get()或者all()是API,一種內置函數,也就是比喻鐘銀行柜員可以幫助我們完成的各種具體業務,不同的業務調用不同的API就可以了。
  • book通過all()得到的就是要給queryset()對象,也就是查詢對象集合。

一,QuerySet 對象的創建方法

>> from blog.models import Blog
>>> b = Blog(name='Beatles Blog', tagline='All the latest Beatles news.')
>>> b.save()總之,一共有四種方法
# 方法 1
Author.objects.create(name="WeizhongTu", email="tuweizhong@163.com")# 方法 2
twz = Author(name="WeizhongTu", email="tuweizhong@163.com")
twz.save()# 方法 3
twz = Author()
twz.name="WeizhongTu"
twz.email="tuweizhong@163.com"
twz.save()# 方法 4,首先嘗試獲取,不存在就創建,可以防止重復
Author.objects.get_or_create(name="WeizhongTu", email="tuweizhong@163.com")
# 返回值(object, True/False)

備注:前三種方法返回的都是對應的 object,最后一種方法返回的是一個元組,(object, True/False),創建時返回 True, 已經存在時返回 False

對比得知,object這個管理器對象幫了我們很多忙,我們不用實例化對象,不用save(),而是交給Author.object去實現。

舉個例子吧,如果我們把數據庫比作銀行,那么object對象就相當于柜員,能幫助你處理各種業務。如果沒有得話,去銀行取錢,我們得自己登記,自己去金庫拿錢,記賬,鎖門.........不太現實吧。同理,你去數據庫取個數據,沒有objects對象,是不是很麻煩?

其實換個角度來講,你去銀行辦理得一些業務,是銀行柜員幫你在銀行得數據庫里進行得增刪改查操作,銀行柜員得名字可以叫object(默認得名字),當然也可以叫小李,小王,不過你得自定義罷了。xiaoli = models.Manage()也是可以得。

你看看,此時此刻,有沒有認識到,一切皆對象,這個面向對象編程得偉大之處。

二,Django中查詢常用的API

# 查詢相關API:#  <1>filter(**kwargs):      它包含了與所給篩選條件相匹配的對象#  <2>all():                 查詢所有結果#  <3>get(**kwargs):         返回與所給篩選條件相匹配的對象,返回結果有且只有一個,如果符合篩選條件的對象超過一個或者沒有都會拋出錯誤。#-----------下面的方法都是對查詢的結果再進行處理:比如 objects.filter.values()--------#  <4>values(*field):        返回一個ValueQuerySet——一個特殊的QuerySet,運行后得到的并不是一系列 model的實例化對象,而是一個可迭代的字典序列#  <5>exclude(**kwargs):     它包含了與所給篩選條件不匹配的對象#  <6>order_by(*field):      對查詢結果排序#  <7>reverse():             對查詢結果反向排序#  <8>distinct():            從返回結果中剔除重復紀錄#  <9>values_list(*field):   它與values()非常相似,它返回的是一個元組序列,values返回的是一個字典序列#  <10>count():              返回數據庫中匹配查詢(QuerySet)的對象數量。# <11>first():               返回第一條記錄# <12>last():                返回最后一條記錄#  <13>exists():             如果QuerySet包含數據,就返回True,否則返回False。

另外關于ApI,給大家推薦一篇不錯得文章

https://blog.csdn.net/cumtdeyurenjie/article/details/80211896

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457150.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457150.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java中為什么設計包裝類,Java 中為什么要設計包裝類

最近文章更新頻率慢了&#xff0c;因為最近在準備暑期實習&#xff0c;之前尋思著一邊復習一邊寫文章&#xff0c;兩全其美。后來發現一篇讀起來比較舒服的文章寫出來加上配圖得花上四五個小時甚至更多&#xff0c;但這個知識點我可能半個小時就能復習完了&#xff0c;春招在即…

bfc

BFC 已經是一個耳聽熟聞的詞語了&#xff0c;網上有許多關于 BFC 的文章&#xff0c;介紹了如何觸發 BFC 以及 BFC 的一些用處&#xff08;如清浮動&#xff0c;防止 margin 重疊等&#xff09;。雖然我知道如何利用 BFC 解決這些問題&#xff0c;但當別人問我 BFC 是什么&…

Python語法異常 Exception

常見異常&#xff1a;Exception 所有異常的基類AttributeError 特性應用或賦值失敗時引發IOError 試圖打開不存在的文件時引發IndexError 在使用序列中不存在的索引時引發KeyError …

Python的Django框架中forms表單類的使用方法詳解

Form Form的驗證思路 前端&#xff1a;form表單 后臺&#xff1a;創建form類&#xff0c;當請求到來時&#xff0c;先匹配&#xff0c;匹配出正確和錯誤信息。 Django的Form驗證實例&#xff1a; 創建project&#xff0c;進行基礎配置文件配置 settings.py settings.py之…

java讀取gpx文件,從Leaflet導出GPX文件

我想要做的是讓用戶通過選擇Leaflet中的一些GeoJson功能來創建GPX文件 . 我這樣做的方法是創建一個新的GeoJson圖層來存儲所選的特征&#xff0c;然后用一個名為togpx(https://github.com/tyrasd/togpx)的插件將其轉換為gpx . 現在我有一個gpx文件&#xff0c;但我沒有t know h…

Mono Compatibility

The easiest way to describe what Mono currently supports is:Everything in .NET 4.5 except WPF, WWF, and with limited WCF and limited ASP.NET 4.5 async stack. System.Web and WCF are candidates for ‘almost immediate’ porting from the .NET reference source …

Python的Django框架中forms表單類的使用方法詳解2

用戶表單是Web端的一項基本功能,大而全的Django框架中自然帶有現成的基礎form對象,本文就Python的Django框架中forms表單類的使用方法詳解。 Form表單的功能 自動生成HTML表單元素檢查表單數據的合法性如果驗證錯誤&#xff0c;重新顯示表單&#xff08;數據不會重置&#xf…

生動形象的理解API是如何工作的!

API(Application Programming Interface,應用程序編程接口) 簡單來說&#xff0c;就是其他人開發出來一塊程序&#xff0c;你想用&#xff0c;他會告訴你調用哪個函數&#xff0c;給這個函數傳什么參數&#xff0c;然后又會返回給你一個什么樣的結果&#xff0c;你不需要知道他…

ann matlab,人工神經網絡ann及其matlab仿真.ppt

人工神經網絡ann及其matlab仿真人工神經網絡 的研究方法及應用劉 長 安2004. 12. 31 引 言 利用機器模仿人類的智能是長期以來人們認識自然、改造自然和認識自身的理想。 研究ANN目的&#xff1a; (1)探索和模擬人的感覺、思維和行為的規律&#xff0c;設計具有人類智能的計算機…

字符串與樹的結合

https://leetcode.com/problems/scramble-string/?tabDescription 雖然題目不常見&#xff0c;但是里面關于字符串調轉和遞歸的思路&#xff0c;還是很有代表性的。 https://discuss.leetcode.com/topic/14337/share-my-4ms-c-recursive-solution/2 這個解法也把里面關于遞歸的…

ubuntu 安裝過程所需軟件

ubuntu 開發過程好用的軟件 Remarkable 一個用于書寫文檔的好工具&#xff0c;包括方便書寫數學公式。安裝過程 點擊上面“remarkable”下載.deb文件&#xff0c;然后雙擊會跳轉到ubuntun的軟件安裝中心&#xff0c;點擊install進行安裝。 sublime text3 配置 自定義快捷鍵Pref…

Day05-循環和列表字符串、元組和字典

一、字符串 字符串就是由若干個不同的unicode字符組成的不可變序列 1 .字符串創建 #單引號字符串 str1 天要下雨&#xff0c;娘要嫁人&#xff0c;由他去吧 str2 str() #空串 str3 str([10,20,30]) ? #雙引號字符串 str2 "天要下雨&#xff0c;娘要嫁人&#xff…

@查看MySQL版本的方法

1.在終端下:mysql -V. [rootlocalhost bin]# mysql -V; mysql Ver 14.14 Distrib 5.6.21, for Linux (x86_64) using EditLine wrapper [rootlocalhost bin]# mysql -v; ERROR 1045 (28000): Access denied for user rootlocalhost (using password: NO) 注意&#xff0c;這…

echarts 柱狀圖 ,顏色和顯示設置

最近在使用echart開發圖標&#xff0c;api里面雖然有些設置&#xff0c;但是如果想讓柱狀圖每個柱的顏色都不相同&#xff0c;簡單的通過color設置是沒有作用的&#xff0c;這里&#xff0c;就要用到其他的方式了 下面只是列舉下我認為比較常用的&#xff0c;其他的比較簡單&am…

Pycharm 專業版 導入系統pip安裝的包

Pycharm 專業版 導入系統pip安裝的包 在setting 中找到project interpeter ,點擊設置圖標&#xff0c;點擊Add&#xff0c;得到如圖所示選擇 System Interpreter即可,這樣 用pip安裝的包都加再進來了

nodejs express

2019獨角獸企業重金招聘Python工程師標準>>> 創建express服務器 //app.js文件 var express require(express); var app express(); //指定更目錄顯示的內容 app.get(/, function(req, res){ res.send(Hello World); }); //指定監聽端口 var server app.listen(…

JS常見知識點

1、寫一個按照下面方式調用都能正常工作的 sum 方法 console.log(sum(2,3)); // Outputs 5 console.log(sum(2)(3)); // Outputs 5 解決方案 function sum() {var fir arguments[0];if (arguments.length 2) {return arguments[0] arguments[1]} else {return function (sec…

格雷碼 matlab,基于格雷碼的結構光重建代碼(MATLAB版本)

【實例簡介】該代碼為brown university相關技術人員編寫&#xff0c;旨在用于學習研究3D結構光的原理、算法實現和應用。由于原有的網站( http://mesh.brown.edu/byo3d/index.html )近期無法訪問&#xff0c;為了便于3D愛好者可以方便學習相關內容&#xff0c;特將該網站部分代…

Day06-函數

函數 一、集合&#xff08;set) 特點:不允許有重復元素&#xff0c;如果添加重復元素&#xff0c;則會自動過濾&#xff0c;可以進行交集、并集的運算。 本質&#xff1a;無序且無重復元素的數據結構 1 創建集合 s1 set() #空集合 不能是{}&#xff0c;這是字典 s2 {1…

在TextView中實時顯示數據

//下面實時更新顯示在textView中的數據handler new Handler();runnable new Runnable(){Overridepublic void run(){// TODO Auto-generated method pushupTextView.setText(Integer.toString(Number.pushup_number)); handler.postDelayed(this, 1000); }}; handle…