Django 外键创建

关键语法:

  models.ForeignKey("UserGroup",to_field="gid",default=1,on_delete=models.CASCADE)

参数:

  "UserGroup"            #外键另外一张表

  to_field="gid"           #另外一张表的字段

  on_delete=models.CASCADE    #因为不加这个会报错相关(https://www.cnblogs.com/phyger/p/8035253.html)

创建数据表格:

from django.db import models

# Create your models here.

class userinfo(models.Model):
uname = models.CharField(max_length=32,db_column="用户名")
pwd = models.CharField(max_length=32,db_column="密码")
email = models.EmailField(null=True,db_column="邮箱")
usergroup = models.ForeignKey("UserGroup",to_field="gid",default=1,on_delete=models.CASCADE) class UserGroup(models.Model):
gid = models.AutoField(primary_key=True)
gname = models.CharField(max_length=32)
test = models.CharField(max_length=32,null=True)
g = models.ForeignKey("Group", to_field="id",null=True,on_delete=models.CASCADE) class Group(models.Model):
grouplist = models.CharField(max_length=255)

在每个字段中都录入数据:

usergroup表 外键 g_id

userinfo表 外键 usergroup_id

跨表查询:原理--(对象(对象(对象)))

obj2 = models.userinfo.objects.filter(uname="root").first()
print(obj2.usergroup.g.grouplist)

Django 外键 数据获取

定义表结构:

from django.db import models

# Create your models here.
class userinfo(models.Model):
uname = models.CharField(max_length=255)
sex = models.CharField(max_length=12)
g = models.ForeignKey("usergroup",to_field="id",on_delete=models.CASCADE,default='') class usergroup(models.Model):
groupname = models.CharField(max_length=255)

外键 数据获取:

def index(request):
# #方式一,obj对象方式
# ss = models.userinfo.objects.filter(id=1)
#
# for i in ss :
# # print(i) 为一个OBJ 对象
# print(i.uname,i.sex,i.g_id,i.g.id,i.g.groupname) #方式二,字典方式
# ss2 = models.userinfo.objects.filter(id=1).values("id","uname","g__groupname")
# for i2 in ss2 :
# # print(i2) 为一个字典对象,根据key取值
# print(i2['id'],i2['uname'],i2['g__groupname']) # 方式三,元组方式
# ss2 = models.userinfo.objects.filter(id=1).values_list("id","uname","g__groupname")
# for i2 in ss2 :
# # print(i2) 为一个元组对象,根据索引取值
# print(i2[0],i2[1],i2[2]) #总结,在利用一对多的表查询时,字典和元组 方式不能直接用 “ . ”(点) 的方式直接取值,否则会直接报错。
#取值通过 双下划 线的方式取值。 return HttpResponse("OK")

外键创建新数据:

    #外键 创建新数据条目:
models.userinfo.objects.create(
uname="小花",
sex="女",
g_id="3"
)
#添加一条数据,跨表添加时需引用外键的id,而不是外键对象

Django学习手册 - ORM 外键的更多相关文章

  1. Django学习手册 - ORM 数据创建/表操作 汇总

    ORM 查询的数据类型: QuerySet与惰性机制(可以看作是一个列表) 所谓惰性机制:表名.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),它 ...

  2. python django中的orm外键级联删除

    今天添加了一个路由表,路由表做外键,然后添加了几个组,路由表为组的外键,当我使用删除功能对路由表进行删除时,竞然将我的组也相当的删除了:尽管这是测试,但放到生产环境中还是会发生意外的:这个问题要解决: ...

  3. django 学习手册 - ORM 报错集(随时更新)

    报错问题: 问题一:(1050代码) django.db.utils.InternalError: (1050, "Table 'app01_group' already exists&qu ...

  4. Django学习手册 - ORM 多对多表

    定义表结构: class Host(models.Model): hostname = models.CharField(max_length=32) port = models.IntegerFie ...

  5. Django学习手册 - ORM数据类型

    DOM 字段/参数 配置格式: Module.字段(参数) 常用的字段归纳: 数字 models.AutoField() 自增列(int),必须设置为主键 models.IntegerField() ...

  6. Django学习手册 - ORM sqlit基础数据库操作

    步骤阐述:( splitDB 是Django自带的一个数据库) 1.在APP01 中的 models.py 配置DB信息  userinfo 相当于数据表的表名,而 uname.pwd 相当于 表中的 ...

  7. Django学习手册 - ORM - ImageField数据类型

    前置步骤 setting.py文件配置: 添加app目录 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'djan ...

  8. Django学习手册 - ORM 单表数据获取

    Django 单表数据的获取: 先建立数据表格 from django.db import models # Create your models here. class userinfo(model ...

  9. Django学习手册 - ORM choice字段 如何在页面上显示值

    在module操作过程中使用choice字段: 核心: obj.get_字段名_display 定义module 数据结构: class msg(models.Model): choice = ( ( ...

随机推荐

  1. 在Linux中复制文件夹下的全部文件到另外文件夹

    https://jingyan.baidu.com/article/656db918f83c0de380249c5a.html 在Linux系统中复制或拷贝文件我们可以用cp或者copy命令,但要对一 ...

  2. Sublime Text 3 Mac常用快捷键与注意事项

    大多数情况下容易忘记的快捷键,在此整理了一下. 编辑快捷键:cmd+L:选择行(重复按下将下一行加入选择):cmd+D:选择词(重复按下时多重选择相同的词进行多重编辑):cmd+shift+D 复制光 ...

  3. Hadoop记录-Hadoop监控指标汇总

    系统参数监控metrics load_one            每分钟的系统平均负载 load_fifteen        每15分钟的系统平均负载 load_five           每5 ...

  4. SSRF漏洞分析与利用

    转自:http://www.4o4notfound.org/index.php/archives/33/ 前言:总结了一些常见的姿势,以PHP为例,先上一张脑图,划√的是本文接下来实际操作的 0x01 ...

  5. Redis学习笔记(二)解析dump.rdb文件工具之redis-rdb-tools

    https://github.com/sripathikrishnan/redis-rdb-tools 我这里使用docker搭建 docker搭建文档 https://rdbtools.com/do ...

  6. 高性能的代理服务-Envoy

    Envoy最初建于Lyft,是一个高性能的代理服务,为服务网格提供了基础. 它与应用程序并行运行,通过以平台无关的方式提供通用功能来抽象网络. 当基础架构中的所有服务流量都通过Envoy网格时,通过一 ...

  7. Golang入门教程(十二)安装注意事项

    1.$GOPATH (1)go 命令依赖一个重要的环境变量:$GOPATH .注:这个不是Go安装目录 (2) (3) (4)git 安装 (5)包管理对应关系 (6)安装完之后bee 工具后,bee ...

  8. nginx配置fcgi

    1.刚开始用网上最多的方式,perl脚本实现cgi,配置最后都完成,一直是504错误,看日志是perl脚本连接超时,可能是版本太旧了吧,nginx更新用不了那种方式了,搞不清楚.貌似那种帖子都是13年 ...

  9. HTTP 错误 500.21 - Internal Server Error 处理程序“WebServiceHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    解决方案是 解决方案:只需要重新安装一下就可以了.在Frameworv4.0的目录中安装的程序以管理员权限重新运行一下就可以了. %windir%\Microsoft.NET\Framework\v4 ...

  10. jsp查询修改

    也是只帖代码....不讲解. 1.search.jsp <%@ page language="java" import="java.util.*" pag ...