我:本次继上次的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的更多相关文章

  1. MySQL为数据表的指定字段插入数据

    username not null 没有默认值/有默认值   insert不插入username字段 均不报错 2014年07月23日21:05    百科369 MySQL为数据表的指定字段插入数据 ...

  2. mysql数据表的基本操作:表结构操作,字段操作

    本节介绍: 表结构操作 创建数据表. 查看数据表和查看字段. 修改数据表结构 删除数据表 字段操作 新增字段. 修改字段数据类型.位置或属性. 重命名字段 删除字段 首发时间:2018-02-18  ...

  3. 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" 现 ...

  4. MySQL 中的数据库名称、数据表名称、字段名称

    如何查询Oracle,Sql Server,MySQL 中的数据库名称.数据表名称.字段名称 分类: Database2012-09-24 22:16 7034人阅读 评论(0) 收藏 举报 数据库s ...

  5. 设置MySQL数据表主键

    设置MySQL数据表主键: 使用“primary key”关键字创建主键数据列.被设置为主键列不允许出现重复的值,很多情况下与“auto_increment”递增数字相结合.如下SQL语句所示: My ...

  6. (转)MySQL数据表中带LIKE的字符匹配查询

    MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56    百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...

  7. 谈谈MySQL数据表的类型(转)

    谈谈MySQL数据表的类型 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等其 ...

  8. mysql数据表增删改查

    http://www.runoob.com/mysql/mysql-tutorial.html 一.MySQL 创建数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以 ...

  9. MySQL 数据表操作

    MySQL 数据表操作 创建MySQL数据表需要以下信息: -表名: -表字段名: -定义每个表字段: 一.创建数据表 1)mysql> create  table  table_name (c ...

随机推荐

  1. OI路上 day -9

    /* 嗯还有9天. 就只有9天了. 啊还剩9天吖! 多年后 我可能还会记得 那些年,我们学过的算法. 多年后 我可能会对别人说 我学过OI我喜欢OI并一直热爱着它. 9天后 我可能再也不会来到这个地方 ...

  2. codevs 2291 糖果堆 x

                         题目描述 Description [Shadow 1]第一题 WJMZBMR买了很多糖果,分成了N堆,排成一列.WJMZBMR说,如果Shadow能迅速求出第 ...

  3. 洛谷 P1135 奇怪的电梯 (dfs)

    题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N).电梯只有四个按钮:开 ...

  4. linux C线程

    一个应用程序可以启动若干个线程: 线程,是程序执行的最小单位: 一般一个最简单的程序最少有一个线程,就是程序本身,也是主函数: 一个线程阻塞不会影响另一个线程: 多线程的进程可以尽可能多的利用系统CP ...

  5. php 解析json失败,解析为空,json在线解析器可以解析,但是json_decode()解析失败(原)

    $str2='{"code":200,"datas":{"id":1,"coupon_id":"123&quo ...

  6. CodeForces 714E Sonya and Problem Wihtout a Legend(单调数列和DP的小研究)

    题意:给你n个数字,每个数字可以加减任何数字,付出变化差值的代价,求最后整个序列是严格单调递增的最小的代价. 首先我们要将这个题目进行转化,因为严格单调下是无法用下面这个dp的方法的,因此我们转化成非 ...

  7. sqoop数据导出

    1.将oracle的jdbc的jar包copy到sqoop的lib目录下 2. sqoop export --connect jdbc:oracle:thin:@XXXXX:1521:TMDM --u ...

  8. 用grep来查询日志

    转自:http://www.itokit.com/2013/0308/74883.html linux系统中,利用grep打印匹配的上下几行   如果在只是想匹配模式的上下几行,grep可以实现.   ...

  9. js对象之间的"继承"的五种方法

    今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = & ...

  10. iOS真机调试之免费预配(Free provisioning)

    免费预配允许开发者在不加入Applec Developer Program的情况下,可以发布和测试App 注意:免费预配(Free Provisioning)与自动预配(Auto Provisioni ...