Django之資料庫聯表查詢,一對多,多對多

2021-09-11 12:00:18 字數 2093 閱讀 7200

from django.db import models

# create your models here.

"""一對多: subject 和 學生

多對多: 老師,學生

"""class subject(models.model):

name = models.charfield(max_length=32)

price = models.integerfield()

def __str__(self):

return '{}--{}'.format(self.name, self.price)

class student(models.model):

name = models.charfield(max_length=32)

age = models.integerfield()

phone = models.charfield(max_length=32)

#多對一在多的一方建立外來鍵,外來鍵生成後會自動新增_id

subject = models.foreignkey(to='subject', on_delete=true)

def __str__(self):

return '{}-{}'.format(self.name, self.age)

class teacher(models.model):

name = models.charfield(max_length=32)

age = models.integerfield()

phone = models.charfield(max_length=32)

salary = models.charfield(max_length=32)

#多對多,在任意類中建立均可

student = models.manytomanyfield(to='student')

def __str__(self):

return '{}-{}'.format(self.name, self.age)

def index(request):

# 一對多查詢,subject --> 學生

# # 正向查詢

# # 1.查詢出盈利學的學科

# student_obj = models.student.objects.get(name='盈利')

# print(student_obj)

# sub_obj = student_obj.subject # 查詢出來的是學科物件

# print(sub_obj)

## 2.查詢出python學科對應的學生

# 反向查詢

python_obj = models.subject.objects.get(name='python')

python_list = models.subject.objects.filter(name='python') #查詢出來的是queryset物件

print(python_list) # ]>

python_obj = models.subject.objects.filter(name='python')[0]

print(python_obj) # python--20800

student_lst = python_obj.student_set.all() # 固定寫法:xx.類名小寫_set.***

print(student_lst) # , ]>

# 2.多對多

# 查詢 波老師教過的學生

bo_obj = models.teacher.objects.get(name='波老師')

student_lst = bo_obj.student.all()

print(student_lst)

# 反向查詢

# 查詢盈利被多少老師教過

student_obj = models.student.objects.get(name='盈利')

teacher_lst = student_obj.teacher_set.all()

print(teacher_lst)

資料庫聯表查詢ABC

最近修改商戶後台的bug,把資料庫相關的技術學習了一遍,俺的終極目標是自己編乙個小型的資料庫,廢話說多了 直接上 case when ns plat res code.is custom reason 1 and ns bill biz msg sts 03 and ns bill biz pmt ...

django資料庫之建表

首先了解幾個知識 什麼是一對多,多對多,一對一 什麼是關聯查詢 什麼是主表,什麼是從表 外來鍵放的位置 正向查詢,反向查詢 各種設計模式下,怎麼查詢 一對多 班級表和學生表 乙個班級可以有多個學生,乙個學生屬於那個班級 一對一 學生表和學生資訊表 每個學生對應各自的學生資訊 多對多 學生表和課程表 ...

django查詢資料庫

特殊過濾 django資料庫查詢時,一般就是 modelname.objects.a ll modelname.objects.filter modelname.objects.get 等等,在過濾時,如果過濾條件假設是其中的某一欄位,比如 id,要求id 5,或者是乙個範圍比如1 id 5,前者可...