sqlite 表与表之间的关系_第33章 Django多表关系之一对一
再次见到多表关系,心中不免又泛起了涟漪,之前没讲清楚的内容,终于有机会得以补充。表与表之间的三种关系再次提上议程,在model中的属性重现江湖。
多表关系,涉及到级联操作,在OneToOneField和ForeignKey中有个on_delete选项(ManyToManyField没有),其可选值有:
models.CASCADE: 关联表中的数据删除时,该外键也被删除(级联删除);
models.SET_NULL: 关联表中的数据删除时,外键置为空(前提是这个外键字段是
null=True);
models.SET_DEFAULT: 删除的时候,外键字段置为默认值(前提是外键有指定默认值) ;
PROTECT: 保护模式,如果采用该选项,删除的时候,会抛出ProtectedError错误;
SET(): 自定义一个值,该值只能是对应的实体。
33.1 一对一关系
在企业里工作,你知道每个月哪天最开心么?—没错,发工资那天。一般企业发工资都是让银行代扣款,转进指定的银行卡里。银行卡跟个人是一对一的关系。
新建的Model放在Post或Department应用下都可以,我选Department,你随意。对了,有个价值百万的操作,千万不要忘记了,记得通过命令生成数据表。
from django.db import modelsimport django.utils.timezone as timezone# 银行卡基本信息class Card(models.Model): card_num = models.CharField(max_length=30, verbose_name="卡号") name = models.CharField(max_length=60, verbose_name="姓名") ID_card = models.CharField(max_length=20, verbose_name='身份证') createDate = models.DateField(default=timezone.now, verbose_name='创建日期') class Meta: verbose_name_plural = '银行卡账户' verbose_name = "银行卡账户" def __str__(self): return self.card_num# 银行卡详情信息class CardDetail(models.Model):# 一对一关联,属性可以定义在任意一方 card = models.OneToOneField(Card, on_delete=models.CASCADE, verbose_name='卡号') tel = models.CharField(max_length=30, verbose_name="电话") mail = models.CharField(max_length=30, verbose_name="邮箱") city = models.CharField(max_length=10, verbose_name="城市") address = models.CharField(max_length=30, verbose_name="详细地址") class Meta: verbose_name_plural = '个人详细资料' verbose_name = "个人详细资料"
有了Card Model,还需要创建CardAdmin,那样才可以加入到后台管理系统中。
from django.contrib import adminfrom .models import Card, CardDetail, Department, Resume, Experience# 纵向显示用:StackedInlineclass CardDetailAdmin(admin.StackedInline): model = CardDetail@admin.register(Card)class ControlCard(admin.ModelAdmin): list_display = ("card_num", "name", "ID_card", 'createDate') # 日期在添加/修改不显示,用默认值 exclude = ['createDate'] # 在Card页面显示详细信息CardDetail inlines = [CardDetailAdmin]
一对一通过StackedInline纵向布局,页面效果挺好的,你喜欢不?如果不喜欢的话,可以找我,但是我也没办法。
sqlite 表与表之间的关系_第33章 Django多表关系之一对一相关推荐
- 第2章线性表的基本使用及其cpp示例(第二章汇总,线性表都在这里)
2.1线性表的定义和特点 [类型定义: *是n个元素的有限序列 *除了第一个元素没有直接前驱和最后一个没有直接后驱之外,其余的每个元素只有一个直接前驱和直接后驱: (a1,a2-an) [特征: *有 ...
- 表单必填标星_怎么用JS做form表单验证,要详细代码,求救!(带星号的是必填项)...
匿名用户 1级 2014-06-17 回答 举个例子吧: <input type="text" id="telephone" > <input ...
- java线性表删除第i个元素_第08话:线性表删除某个元素
根据之前定义的线性表ADT,现在还剩下一个操作,就是删除了.今天把这个操作弄完. 了解线性表的插入,就很容易理解线性表的删除了.删除就是插入的逆过程. 删除算法的思路: 如果删除位置不合理,抛出异常: ...
- mysql表一定要主键吗_最滋补五脏的食物表,一定要给家人存下
原标题:最滋补五脏的食物表,一定要给家人存下 我们人体内的主要器官就是心.肝.脾.肺.肾,只要养好它们身体就会棒棒哒~那滋补五脏,我们要吃些什么食物呢?往下看你就知道了! 养心的食物 1.桂圆 可用桂 ...
- mysql筛选两个表有相同项的数据库_用SQL查询两个表中相同的数据
展开全部 1.创建测试表: create table test_col_1(id number, var varchar2(200)); create table test_col_2(id numb ...
- 集群节点数和分片数关系_离子晶体配位数与离子半径比的关系
孩子.家长都需要的心理测试:情商测试.专业心理健康测评.专注力评估.学生考试心理健康测试.家长胜任能力测试等12项. 点击下图即可进入测试,测试结果可以发到您的微信,为您的决策提供帮助! 教师简介 东 ...
- java与jsp的关系_浅谈servlet与jsp的关系
servlet是用java语言编写的,是一个java类.主要功能是用来接受.处理客户端的请求,并把处理结果返回到客户端显示.Jsp是servlet发展后期的产物.在没有jsp之前,servlet利用输 ...
- 简述相关与回归分析的关系_浅谈相关分析与回归分析的关系
浅谈相关分析与回归分析的关系 郝依寒 [期刊名称] <数字通信世界> [年 ( 卷 ), 期] 2018(000)004 [摘要] 本文以回归分析及回归分析的应用为对象做出简要论述 , 通 ...
- java跟微服务什么关系_分布式和微服务是什么关系?
分布式和微服务是什么关系?简单来说,分布式和微服务的概念比较相似,分布式属于微服务.但是分布式和微服务在架构.作用和粒度上有所区别.因此,两者的关系是既相互联系又相互区别.本文主要带大家认识分布式和微 ...
- 一阶导与二阶导的关系_数学分析|第九章 定积分关于二阶导函数正负和定积分结合证明不等式问题总结...
当公式或文字展 示不完全时,记得向左←滑动哦! 摘要: 当题目中给出二阶导函数正负时,可以得到函数和导函数存在某种不等式关系,此时需要两边进行积分,积分时一定要注意积分变量的选取.[公众号:岩宝数学考 ...
最新文章
- 今日宇宙最热科技:人工智能可预测死亡时间,马斯克拿下美空军1.3亿合同!...
- 选择Data类型在Access与Sql中的区别
- MPLS自身的优点所带来的网络便捷—Vecloud微云
- 密码技术--国密SM4分组密码算法及Go语言应用
- MySQL数据库基本的“增删改查”操作 -《狗嗨默示录》-
- app engine_App Engine中的Google Services身份验证,第2部分
- BZOJ3040:最短路——题解
- 9张图总结一下阿里云的2019
- php自动合并,php实现合并数组并去除重复的方法
- 公布 | 中国图象图形学学会首批Fellow名单公布
- 自定义序列化和反序列化的java实现
- windows temp用户问题
- mongodb 创建用户
- 21天学通JAVA之事务处理
- -f linux_SAIL-F-8-2-4-0-12流量积算仪-老友网
- Nginx一个server主机上80、433http、https共存
- 计算机音乐谱魔法城堡,《魔法城堡》简谱 TFBOYS 乐谱 - 新芭网
- oracle用par文件导出dmp文件及导入dmp文件
- java工控_用java做工控的大神进
- linux网站如何添加swf支持,linux上查看swf文件.靠谱
热门文章
- CBD将建智慧城市管理平台
- PHP中钩子函数的实现与认识
- 设计模式之美:Builder(生成器)
- fastreport(B)
- 通过 Socket 实现 UDP 编程 入门
- linux 主流 集群 软件,Linux 高可用(HA)集群之Pacemaker详解
- android 字体加粗_Android小技巧之TextView字体加粗
- c++在数组中添加元素_LeetCode 题解 | 1157. 子数组中占绝大多数的元素
- 精英主板bios_各品牌主板和品牌电脑启动项与bios启动键大全!!值得收藏
- python opencv 中文_OpenCV-Python在图片上输出中文