ORM之連表操作
阿新 • • 發佈:2018-03-04
span 技術 數據 import alt AD apt 分享 增加
ORM之連表操作
UserInfo和UserType兩個表關聯,UserInfo的外鍵連UserType的主鍵。拿到UserInfo的所有信息,就可以拿與UserInfo相關聯的UserType的數據。
result = model.UserInfo.object.all()
與UserInfo有關聯的UserType表:
for obj in result:
print(obj.name,obj,age,obj.ut_id,obj.ut_title)
#ut_id是UserType表的id,ut_title是UserType中的title
#如果UserType表中,也有Foreigkey字段,也可以繼續跨表,接著點就行。
eg:
在model中:
from django.db import models class Foo(models.Model): caption = models.CharField(max_length=32) class UserInfo(models.Model): #主鍵會自行創建,也可自己創建,nid為字段 nid = models.BigAutoField(primary_key=True) username = models.CharField(max_length=32) password = models.CharField(max_length=64)model#增加列,在增加是,可以定義為空,也可定義為默認值 age = models.IntegerField(null=True) # age = models.IntegerField(default=1) #外鍵關聯UserGroup表,代表UserGroup的一行數據 usergroup = models.ForeignKey("UserGroup",null=True) class UserGroup(models.Model): #隱藏id,Django的ORM會加的 title = models.CharField(max_length=32) fo= models.ForeignKey(‘Foo‘,null=True)
在views中:
from models同級目錄文件 import models def test(request): result = models.UserInfo.objects.all() print(result) for i in result: print(i.username,i.usergroup.title,i.usergroup.fo.caption)views
在print(i.username,i.usergroup.title,i.usergroup.fo.caption)中,有跨一張表的,和兩張表的。
i.username:拿的本表的
i.usergroup.title 跨一張表的
i.usergroup.fo.caption 跨兩張表的
ORM之連表操作