码迷,mamicode.com
首页 > 其他好文 > 详细

ORM之连表操作

时间:2018-03-04 21:49:49      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:pen   userinfo   group   tle   自己   连表   跨表   span   主键   

  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)
    #增加列,在增加是,可以定义为空,也可定义为默认值
    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)
model

  在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之连表操作

标签:pen   userinfo   group   tle   自己   连表   跨表   span   主键   

原文地址:https://www.cnblogs.com/george92/p/8506259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!