7 連表操作

2022-08-31 21:54:19 字數 1691 閱讀 3656

利用雙下劃線和 _set 將表之間的操作連線起來

一、資料表結構

fromdjango.db importmodels

class userprofile(models.model):

user_info =models.onetoonefield('userinfo',on_delete=none)

username =models.charfield(max_length=64)

password =models.charfield(max_length=64)

def __str__(self):

returnself.username

class userinfo(models.model):

user_type_choice = (

(0,u'

普通使用者

'),

(1,u'

高階使用者

'), )

user_type =models.integerfield(choices=user_type_choice)

name =models.charfield(max_length=32)

email =models.charfield(max_length=32)

address =models.charfield(max_length=128)

def __str__(self):

returnself.name

class usergroup(models.model):

caption =models.charfield(max_length=64)

user_info =models.manytomanyfield('userinfo')

def __str__(self):

returnself.caption

class host(models.model):

hostname =models.charfield(max_length=64)

ip =models.genericipaddressfield()

user_group =models.foreignkey('usergroup')

def __str__(self):

returnself.hostname

二、一對一查詢

user_info_obj =models.userinfo.objects.filter(id=1).first()

print(user_info_obj.user_type)

print(user_info_obj.get_user_type_display())

print(user_info_obj.userprofile.password)

#這裡userprofile

是小寫。因為在資料庫中全部是小寫

user_info_obj =models.userinfo.objects.filter(id=1).values('email', 'userprofile__username').first()

print(user_info_obj.keys())

print(user_info_obj.values())

三、一對多查詢

類似一對一

1、搜尋條件使用

__ 連線

2、獲取值時使用.連線

四、多對多操作

連表刪除以及連表修改

用一句sql同時修改有關聯的兩張表資料 通過一張表的其中乙個欄位去修改這張表的資料同時修改關聯表的資料,不去寫兩次修改。因為有可能在修改資料的時候可能產生異常,導致表1的資料修改了,表2的資料未修改,所以可以用到連表修改 連表修改 update mixrecord a,mix record batc...

mysql的連表查詢 MySQL 連表查詢

連表查詢 連表查詢通常分為內連線和外連線。內連線就是使用inner join進行連表查詢 而外連線又分為三種連線方式,分別是左連線 left join 右連線 right join 全連線 full join 下來我們一起來看一下這幾種連線方式的區別及基礎用法。內連線inner join inner...

mysql連表查詢

mysql連表查詢 上下 select from a.mobile user where union all select from b.mobile user where 左右 mysql聯合查詢效率較高,以下例子來說明聯合查詢 內聯 左聯 右聯 全聯 的好處 t1表結構 使用者名稱,密碼 use...