1對1,1對多,多對多
1對1:
onetoonefield
主鍵和外來鍵是一對一的關係,在關聯表中,只能關聯乙個主表的id拓展表找主表。
建立模型:
class
student
(models.model):
stu_name = models.charfield(max_length=10)
stu_*** = models.booleanfield()
stu_birth = models.datefield()
stu_create_time = models.datetimefield(auto_now_add=true)
stu_operate_time = models.datetimefield(auto_now=true)
stu_yuwen = models.decimalfield(max_digits=3, decimal_places=1)
stu_shuxue = models.decimalfield(max_digits=3, decimal_places=1)
g_id = models.foreignkey(grade, null=true)
class
meta:
db_table = 'stu'
class
studentinfo
(models.model):
stu_addr = models.charfield(max_length=30)
stu_age = models.integerfield()
stu = models.onetoonefield(student)
class
meta:
db_table = 'stu_info'
在表中生成的關聯欄位名稱為stu_id
通過學生拓展表去獲取學生資訊
通過拓展表去獲取學生的資訊:
學生拓展表的單個物件(stuinfo).關聯字段(stu)
stuinfo = stuinfo.objects
.all().first()
student = stuinfo.stu
通過學生獲取關聯表中個人資訊
通過學生獲取關聯表的資料:
學生物件(stu).關聯的表名(stuinfo),即可獲取到關聯表的資料
stu = student.objects.all().first()
stuinfo = stu.stuinfo
1對多:
通過models.forergnkey()關聯外來鍵實現。
建立模型:
class
grade
(models.model):
g_name = models.charfield
(max_length=16)
class
student:
s_name = models.charfield
(max_length=10)
s_age = models.integerfield
(default=1)
s_grade = models.foreignkey
(grade, on_delete=protect)
通過學生去獲取班級資訊:
stu = student.objects.first()
stu.stu_grade
如下是通過班級獲取學生資訊(通過一獲取多的資料):
語法:一的物件.多的模型_set
低效能方法:
g = grade.objects
.all().first()
s = student.objects
.filter(s_grade=g)
高效能方法:
g = grate.objects
.all().first()
s = g.student_set.all()
多對多:
models.manytomanyfield()
建立模型:
class
user
(models.model):
# 建立使用者模型
u_name = models.charfield(max_length=32)
class
goods
(models.model):
# 建立商品模型
g_name = models.charfield(max_length=32)
g_user = models.manytomanyfield(user)
生成表時會有三張表,多出的一張表用來連線兩個模型,這長表通過兩個外來鍵建立兩個一對多來實現多對多。
多對多獲取資料
獲取第乙個使用者購買了那些商品
u = user.objects
.all().first()
allstu = u.goods_set.all()
獲取指定商品的購買使用者資訊
g = goods.objects
.filter(id=1)[0]
g.g_user.all()
Django模型關聯
關係字段型別 關係型資料庫的關係包括三種型別 一對多關係 參見booktest應用中的bookinfo類和heroinfo類。定義圖書模型類bookinfo class bookinfo models.model btitle models.charfield max length 20 圖書名稱 ...
django 模型 關聯關係
stu student.objects.create name computer.objects.create name 電腦 stu stu school school.objects.create name stu student.objects.create name school schoo...
Django1 6中models模型關聯的方法整理
foreignkey是個多對一 many to one 關係。引用下官方文件的例子 from django.db import models class topping models.model pass class pizza models.model toppings models.foreig...