Django模型層 多表操作

2022-09-20 07:45:12 字數 2092 閱讀 6503

方式1:

publish_obj=publish.objects.get(nid=1)

book_obj=book.objects.create(title="",publishdate="

2012-12-12

",price=100,publish=publish_obj)

方式2:

book_obj=book.objects.create(title="",publishdate="

2012-12-12

",price=100,publish_id=1)

(1)

#book=book.objects.filter(name='紅樓夢').first()

#print(book)##

print(book.publish)

#(2)book.authors.all()

多對多關係以及其他api

book_obj.authors.remove()      #

將某個特定的物件從被關聯物件集合中去除。 *****= book_obj.authors.remove(*)

book_obj.authors.clear() #

清空被關聯物件集合

book_obj.authors.set() #

先清空再設定

正向查詢按欄位,反向查詢按表名_set

a表book(關聯自動段)   b表 publish

#正向查詢 a--->b 關聯欄位再a,a去查詢b表,這叫正向查詢,按欄位來查

#反向查詢 b--》a 關聯欄位再a,b去查詢a表,這叫反向查詢,按表明小寫_set

#

一對多正向查詢

book=book.objects.filter(name='

紅樓夢'

).first()

print(book.publish)#

與這本書關聯的出版社物件

print

(book.publish.name)

#一對多反向查詢

#人民出版社出版過的書籍名稱

pub=publish.objects.filter(name='

人民出版社

').first()

ret=pub.book_set.all()

print

(ret)

複製**

正向查詢按欄位,反向查詢按表名_set

a表book(關聯自動段)   b表 publish

#正向查詢 a--->b

#反向查詢 b-->a

總結:一對一 正向:按欄位 反向:按表名小寫

一對多 正向:按欄位 反向:按表名小寫_set

多對多 正向:按欄位 反向:按表名小寫_set

#

正向查詢----查詢紅樓夢所有作者名稱

book=book.objects.filter(name='

紅樓夢'

).first()

ret=book.authors.all()

print

(ret)

for auth in

ret:

print

(auth.name)

#反向查詢 查詢lqz這個作者寫的所有書

author=author.objects.filter(name='

lqz'

).first()

ret=author.book_set.all()

print(ret)

正向查詢按欄位,反向查詢按表名小寫用來告訴orm引擎join哪張表
總結:用__告訴orm,要連線那個表

一對一: 正向:按欄位 反向:按表名小寫

一對多: 正向:按欄位 反向:按表名小寫

多對多: 正向:按欄位 反向:按表名小寫

Django 模型層 模型

django內建模型方法 乙個模型包含了資料的字段和操作方法,每個模型對映為一張資料庫中的表 person models.py from django.db import models class person models.model first name models.charfield max...

django的多表操作

多表操作 基於物件的跨表查詢 多次查詢 一對一 正向查詢按欄位 反向查詢按表名小寫 一對多 正向查詢按欄位 正向查詢一定會查出乙個來 反向查詢按表名小寫 set.all 返回結果是queryset物件 多對多 正向查詢按欄位.all 正向查詢一定會查出多個來 反向查詢按表名小寫 set.all 返回...

Django筆記 模型層

1 模型類定義 模型定義的基本結構 from django.db import models class modelname models.model field models.xxfield field models.xxfield class meta db table other metas ...