幾對幾的模型結構的使用場景為:一般根據業務需求,同一業務,需要向相關聯的多表插入刪除數據時,會用到。
一對一:
創建一個用戶表
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)