Django 一對一,一對多,多對多 操作、常用方法
幾對幾的模型結構的使用場景為:一般根據業務需求,同一業務,需要向相關聯的多表插入刪除資料時,會用到。
一對一:
建立一個使用者表
class Users(models.Model):
username = models.CharField(max_length=20,null=true,blank=true)
class Meta:
db_table='users'
建立一個使用者詳情表
#在使用者詳情表中,關聯使用者表,讓兩個表的資料產生聯絡
#第一個引數,是被關聯的模型名稱
#第二個引數:當user使用者表中的一條資料被刪除時候,與之對應的詳情表資料也會被刪除
class UserInfo(models.Model):
uid = models.OneToOneField(Users,on_delete=models.CASCADE)
address = models.CharField(max_length=100,null=True)
class Meta:
db_table='userinfo'
生成遷移檔案 :python3 manage.py makemigrations
執行遷移檔案:python3 manage.py migrate
此時一對一的表建立完成,下面進行操作:
新增資料:向user表中新增一條,同時也會向userinfo相對應的新增一條資料
data = {'name':'ss','age':23}
ob = models.User(**data)
ob.save()
obl = models.UserInfo()
obl.address='ts'
obl.uid=ob
obl.save()
return HttpResponse('一對一')
查詢資料:
查詢user表資料:
ob = models.User.objects.get(id=11)
根據從表的外來鍵查詢主表的資料:
1、先找到從表的該條資料
ui = models.User.objects.first()
2、根據從表的外來鍵拿到主表的資訊,格式: ui.從表外來鍵.主表想得到的資訊
print(ui.uid.name) #取到對應的主表資訊
根據主表的主鍵查詢從表的資料:
1、先找到主表的該條資料
u = models.User.objects.first()
2、根據主表物件拿到從表的資訊 ,格式: u.從表.從表想得到的資訊
print(u.UserInfo.address)