1. 程式人生 > >Django 一對一,一對多,多對多 操作、常用方法

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)