django modals中的增刪改查

2021-09-18 07:49:40 字數 1592 閱讀 8925

在查詢的時候,在filter和values中可以運用萬能的雙下劃線」__」直接將子表或者主表的想查的所有物件拿過來,例如我想查由南方出版社出版的書的**和名字,那麼我們只要輸入:

book.objects.filter(publish__name=』南方出版社』).values(『name』,』price』),
publish.objects.filter(book__name=』三國演義』).values(『city』)
book.objects.filter(name='三國演義').values('publish__name','publish__city')
首先先在book表中定位到name=『三國演義』,然後在values中直接呼叫外來鍵關聯的publish的表中的內容,雙下劃線直接呼叫了publish中的所有數值。這句話也可以用另一種方式寫:

publish.objects.filter(book__name=』三國演義』).values(『name』,』city』)
values裡的資料是用來顯示最後想要得到的資料,前面只是查詢。

在django的models中一共有2中資料型別:querysetobject物件:

object:乙個object物件就是表中的一條資料,表中所有的字段它都有

queryset查詢集是一組資料的集合,跟python的list基本一樣的

所以當我們在使用雙下劃線時,實際上是呼叫了queryset查詢集進行獲取,**queryset__**可以獲取所有的資料物件。和object.欄位名的查詢結果是一樣的。

object.id=queryset__id
在進行多對多表的orm操作的時候,首先設定manytomany()如果括號裡的表名上面還沒有定義,那麼就不能直接使用要加引號。

在對多表進行操作時,實際上是在操作設定了manytomany的這個欄位名。

例如:定義了乙個student表,在表中t=manytomany(『teacher』),那麼t就是student的乙個字段,一共有三種方式可以操作,增刪改。

當然首先要獲取乙個物件,在這裡要特別注意我們要獲取的物件不能時queryset物件,這就是說我們在那物件是不能只使用all和filter,在後面要加條件,不然會報錯。

然後就是增加:obj.t.add()括號裡填寫要新增的老師表裡的id號,可以是單個引數,2個引數,或者是列表。注意要加列表時,列表前要加*號。例如obj.t.add(*[1,2,3])

刪:obj.t.remove()用法和增加相同。

obj.t.clear()刪除所有

改:這裡是乙個新的方法obj.t.set(),注意set方法的引數是乙個列表,不用加*號,set的作用是將列表裡有的id設定,其餘全部清楚。

php中mysql自增 MySQL的自增欄位

1.關鍵字 auto increment 2.自增用法 例 create table animals id mediumint not null auto increment,name char 30 not nu 1.關鍵字 auto increment 2.自增用法 例 create table...

SQLServer中identity 自增 的用法

一 identity的基本用法 1.含義 identity表示該字段的值會自動更新,不需要我們維護,通常情況下我們不可以直接給identity修飾的字元賦值,否則編譯時會報錯 2.語法 列名 資料型別 約束 identity m,n m表示的是初始值,n表示的是每次自動增加的值 如果m和n的值都沒有...

SQL Server 2005中的T SQL增強D

遞迴的通用表表示式 遞迴的cte是根據至少兩個查詢 或者稱為兩個成員 構建的,乙個是非遞迴查詢,也成為固定成員,只能呼叫一次,另外乙個是遞迴查詢,也成為遞迴成員 rm 可以反覆呼叫,直到查詢不再返回行。查詢由union all運算子連線為乙個單獨的cte。使用遞迴的通用表表示式 gocreate t...