django的model操作匯整詳解
單表操作
增加數(shù)據(jù)
auther_obj = {"auther_name":"崔皓然","auther_age":1}
models.auther.objects.create(
**auther_obj
)
models.auther.objects.create( auther_name="周雍博", auther_age=4 )
obj = models.auther( auther_name="崔洪艷", auther_age=29 ) obj.save()
obj = models.auther( auther_name = "王仙枝", auther_age = "50" ) obj.save()
刪除數(shù)據(jù)
models.auther.objects.filter(auther_name="崔洪艷")[0].delete()
一對多操作
增加數(shù)據(jù)
a_obj = models.auther.objects.get(id=1) models.book.objects.create( book_name = "python課程1", book_price = 12, book_auther = a_obj )
a_obj = models.auther.objects.get(id=5) models.book.objects.create( book_name = "java課程1", book_price = 13, book_auther_id = a_obj.id )
a_obj = models.auther.objects.get(id=2)
book_dict = {
"book_name":"python課程2",
"book_price":14,
"book_auther_id":a_obj.id
}
obj = models.book.objects.create(
**book_dict
)
a_obj = models.auther.objects.get(id=4)
book_dict = {
"book_name":"java課程2",
"book_price":15,
"book_auther":a_obj
}
models.book.objects.create(
**book_dict
)
一對多正向查詢
# 查詢id為2的書的所有作者的信息
obj = models.book.objects.get(id=2)
print(obj.book_auther.auther_name)
print(obj.book_auther.auther_age)
obj = models.book.objects.filter(id=2).values("book_name","book_price","book_auther__id","book_auther__auther_name","book_auther__auther_age")
print(obj)
# 查詢id為2的作者的出版的書
obj = models.book.objects.filter(book_auther_id=2).values("book_name","book_price","book_auther__id","book_auther__auther_name","book_auther__auther_age")
print(obj)
obj = models.book.objects.get(book_auther_id=2)
print(obj.book_auther.auther_age)
print(obj.book_auther.auther_name)
print(obj.book_name)
一對多反向查詢
# 查看出版社出版的書
obj = models.auther.objects.filter(id=2).values("auther_name","auther_age","book__book_name")
print(obj)
obj = models.auther.objects.get(id=2).book_set.values("book_name","book_price","book_auther__id","book_auther__auther_name","book_auther__auther_age")
print(obj)
多對多操作
增加數(shù)據(jù)
b1 = models.book.objects.get(id=1) b2 = models.book.objects.get(id=2) b4 = models.book.objects.get(id=4) b5 = models.book.objects.get(id=5) models.publish.objects.get(id=1).publish_book.add( b1,b2 )
book_list = [b1,b2] models.publish.objects.get(id=2).publish_book.add( *book_list )
更新數(shù)據(jù)
book_list = [b1,b2,b4,b5] models.publish.objects.get(id=1).publish_book.set(book_list)
移除數(shù)據(jù)
models.publish.objects.get(id=1).publish_book.remove(b1) book_list = [b2, ] models.publish.objects.get(id=1).publish_book.remove(*book_list)
正向查詢
obj = models.publish.objects.get(id=1).publish_book.values("book_name","publish__publish_name")
print(obj)
obj = models.publish.objects.filter(id=1).values("publish_name","publish_book__book_name")
print(obj)
反向添加數(shù)據(jù)
p1 = models.publish.objects.get(id=1) p2 = models.publish.objects.get(id=2) p3 = models.publish.objects.get(id=3) b1.publish_set.add(p1,p2,p3)
反向刪除數(shù)據(jù)
b1.publish_set.remove(p1)
反向更新數(shù)據(jù),把remove替換為set就可以了
反向查詢
obj = models.book.objects.get(id=1).publish_set.values("publish_name","publish_book__book_name")
model中多表關(guān)系和參數(shù)



多對多



一對一

model操作







以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python添加時間軸以實現(xiàn)動態(tài)繪圖詳解
這篇文章主要為大家詳細介紹了Python如何添加時間軸以實現(xiàn)動態(tài)繪圖,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以參考一下2023-09-09
Python實現(xiàn)學(xué)生管理系統(tǒng)并生成exe可執(zhí)行文件詳解流程
由于Python都會了,學(xué)校教的確實基礎(chǔ),平時就沒怎么去上課,讓美女老師天天腦殼痛,這不快畢業(yè)了,讓我做一個學(xué)生管理系統(tǒng)出來,還要打包成exe發(fā)給她,她就不追究我不上課的問題了2022-01-01
解決pandas展示數(shù)據(jù)輸出時列名不能對齊的問題
今天小編就為大家分享一篇解決pandas展示數(shù)據(jù)輸出時列名不能對齊的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Python 讀取.shp文件并生成圖幅編號的實現(xiàn)思路
這篇文章主要介紹了Python 讀取.shp文件并生成圖幅編號,代碼適用于需要處理和分析地理空間數(shù)據(jù)的場景,如城市規(guī)劃、環(huán)境監(jiān)測或自然資源管理,其中它可以幫助用戶讀取特定區(qū)域的Shapefile文件,確定其地理邊界,需要的朋友可以參考下2024-05-05
Kali Linux安裝ipython2 和 ipython3的方法
今天小編就為大家分享一篇Kali Linux安裝ipython2 和 ipython3的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07

