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 ...
随机推荐
- luoguP2863 [USACO06JAN]牛的舞会The Cow Prom
P2863 [USACO06JAN]牛的舞会The Cow Prom 123通过 221提交 题目提供者 洛谷OnlineJudge 标签 USACO 2006 云端 难度 普及+/提高 时空限制 1 ...
- kafka 性能测试脚本
[参考文章]:Kafka自带的性能测试脚本 1. 生产消息压测脚本 1.1 脚本及参数 bin/kafka-producer-perf-test.sh --topic kafka-test-0 -- ...
- 修改mp3图片和信息——BesMp3Editor
导读 BesMp3Editor, 是一款小巧的 MP3 编辑工具,可以修改.添加 MP3 上的图片.歌曲名.歌手.专辑信息. 最近想给 BesLyric-for-X 添加一个功能,为下载下来的歌曲添加 ...
- Java-JVM 运行时内存结构(Run-Time Data Areas)
Java 虚拟机定义了在程序执行期间使用的各种运行时数据区域. 其中一些数据区域所有线程共享,在 Java 虚拟机(JVM)启动时创建,仅在 Java 虚拟机退出时销毁. 还有一些数据区域是每个线程的 ...
- Python中列表操作进阶及元组
列表高级操作 一.遍历列表 >>> ls=['a','d','it'] >>> for val in ls: ... print (val) ... a d it ...
- Python关于%matplotlib inline
Python关于%matplotlib inline %matplotlib inline 是一个魔法函数(Magic Functions).官方给出的定义是:IPython有一组预先定义好的所谓的魔 ...
- 前端性能之Chrome的Waterfall
浏览器根据HTML中外连资源出现的顺序,依次放入队列(队列),然后根据优先级确定向服务器获取资源的顺序.同优先级的资源根据HTML中出现的先后顺序来向服务器获取资源. 瀑布中各项内容的含义: 排队: ...
- android dialog使用自定义布局 设置窗体大小位置
AlertDialog.Builder builder = new Builder(mContext); builder.setTitle("更新进度"); final Layou ...
- SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
问题描述: 已经安装了android-sdk 和gradle环境,并配置了环境变量,如下所示: android环境 root@wangju-HP--G4:/home/wangju/Desktop/5i ...
- Appium移动自动化测试(五)之应用操作
实验简介 对于APP测试来讲, 除了进行功能测试以外, 安装和卸载其实也是一个很重要的测试项. 试想, 如果用脚本来实现了, 可以事先判断该应用是否已安装, 根据判断结果来执行安装和卸载的动作, 循环 ...