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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM