Django2.2 Mysql数据表一对一映射(字段绑定) --Model拓展学习笔记shen
我:本次继上次的Model继续延伸一下数据表之间的一对一映射关系
访客:有什么用?
我:众所周知,一张数据表的字段太多会显得冗余、杂乱,那么就需要将一张表进行拆分成多个表,这样不会太杂乱,也比较好维护
举例:每个人都有一张身份证,有且唯一一张,这里就存在一个 一对一的关系
一、Model建立
#一对一的模型实例:
class Person(models.Model):
p_name=models.CharField(max_length=16)
p_sex=models.BooleanField(default=False) class IDCard(models.Model):
id_num=models.CharField(max_length=18,unique=True)
#一对一
id_person=models.OneToOneField(Person,on_donelete=models.CASCADE,null=True,blank=True)
这里有两点需要注意,
1.OneToOneField(映射的模型,Django2.X之后要加上的on_donelete属性)
2.id_num-----------unique=True
二、路由的设定:
from django.urls import path from App1 import views urlpatterns=[
path(r'hello/',views.hello,name='hello'),
#一对一项目实例 path(r'addperson/',views.add_person,name='add_person'),
path(r'addidcard/',views.add_idcard,name='add_idcard'),
path(r'bindcard/',views.bind_card,name='bind_card'),
]
分别为:
- 添加人员信息
- 添加身份证信息
- 绑定身份证
三、View的构造:
#一对一实例
#添加人
def add_person(request):
username=request.GET.get("username") person =Person()
person.p_name=username
person.save() return HttpResponse("Person创建成功!%d"% person.id) #添加身份证
def add_idcard(request):
idnum=request.GET.get("idnum") idcard=IDCard() idcard.id_num=idnum
idcard.save() return HttpResponse("IDCard %d"% idcard.id) def bind_card(request): person =Person.objects.last() idcard=IDCard.objects.last() idcard.id_person=person
idcard.save() return HttpResponse("绑定成功!")
结果如下(大家感兴趣的也可以试试)

下期继续更新Model拓展
Django2.2 Mysql数据表一对一映射(字段绑定) --Model拓展学习笔记shen的更多相关文章
- MySQL为数据表的指定字段插入数据
username not null 没有默认值/有默认值 insert不插入username字段 均不报错 2014年07月23日21:05 百科369 MySQL为数据表的指定字段插入数据 ...
- mysql数据表的基本操作:表结构操作,字段操作
本节介绍: 表结构操作 创建数据表. 查看数据表和查看字段. 修改数据表结构 删除数据表 字段操作 新增字段. 修改字段数据类型.位置或属性. 重命名字段 删除字段 首发时间:2018-02-18 ...
- mysql中大数据表alter增加字段报错:"1034 Incorrect key file for table 'table_name'; try to repair it"
mysql中大数据表alter增加字段报错:"1034 Incorrect key file for table 'table_name'; try to repair it" 现 ...
- MySQL 中的数据库名称、数据表名称、字段名称
如何查询Oracle,Sql Server,MySQL 中的数据库名称.数据表名称.字段名称 分类: Database2012-09-24 22:16 7034人阅读 评论(0) 收藏 举报 数据库s ...
- 设置MySQL数据表主键
设置MySQL数据表主键: 使用“primary key”关键字创建主键数据列.被设置为主键列不允许出现重复的值,很多情况下与“auto_increment”递增数字相结合.如下SQL语句所示: My ...
- (转)MySQL数据表中带LIKE的字符匹配查询
MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56 百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...
- 谈谈MySQL数据表的类型(转)
谈谈MySQL数据表的类型 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等其 ...
- mysql数据表增删改查
http://www.runoob.com/mysql/mysql-tutorial.html 一.MySQL 创建数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以 ...
- MySQL 数据表操作
MySQL 数据表操作 创建MySQL数据表需要以下信息: -表名: -表字段名: -定义每个表字段: 一.创建数据表 1)mysql> create table table_name (c ...
随机推荐
- Linux命令(Ubuntu)
VMware 打开命令模式快捷键: Ctrl + Alt + T VMware 里面Ubuntu不能全屏, 本来想着习惯就好, 知道今天看一些信息不能全部显示, 最终不能忍了. 上网找了很多方法 主 ...
- 《剑指offer》算法题第六天
今日题目: 顺时针打印矩阵 包含min函数的栈 栈的压入.弹出序列 从上到下打印二叉树 二叉树搜索树的后序遍历序列 二叉树中和为某一值的路径 今天的题目都比较简单,下面一一介绍: 1. 顺时针打印矩阵 ...
- ZAP-Queries【luogu3455】
题目大意 有不超过\(50000\)个询问,每次询问有多少正整数对\(x\),\(y\),满足\(x\leqslant a\),\(y \leqslant b\),并且\(gcd(x,y)=c\).其 ...
- Android_(控件)使用ListView显示Android系统中SD卡的文件列表
使用ListView显示Android SD卡中的文件列表 父类布局activity_main.xml,子类布局line.xml(一个文件的单独存放) 运行截图: 程序结构: <?xml ver ...
- Linux安装JDK、tomcat
修改tomcat 相关配置必须重启后才生效 如何启动tomcat 在终端框内切换到tomcat 的bin路径下 启动tomcat:./startup.sh 关闭tomcat:./shutdown.sh ...
- 如何在main.js中改变vuex中的值?
做登录权限控制的时候, 我通过全局路由守卫来去做权限判断,这样的话可能需要在整个项目加载的初期去做一些诸如 接口请求. vuex修改 之类的问题 其实非常简单,直接如图:
- koa 基础(二十五)数据库 与 art-template 模板 联动 --- 新增数据
1.视图层 根目录/views/index.html <!DOCTYPE html> <html lang="en"> <head> <m ...
- linux搭建ftp配置文件
# Example config file /etc/vsftpd/vsftpd.conf## The default compiled in settings are fairly paranoid ...
- 哨兵模式启动redis
# 启动Redis服务器进程./redis-server ../redis.conf# 启动哨兵进程./redis-sentinel ../sentinel.conf windows 启动 redis ...
- LC 302. Smallest Rectangle Enclosing Black Pixels【lock, hard】
An image is represented by a binary matrix with 0 as a white pixel and 1 as a black pixel. The black ...