再次见到多表关系,心中不免又泛起了涟漪,之前没讲清楚的内容,终于有机会得以补充。表与表之间的三种关系再次提上议程,在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多表关系之一对一相关推荐

  1. 第2章线性表的基本使用及其cpp示例(第二章汇总,线性表都在这里)

    2.1线性表的定义和特点 [类型定义: *是n个元素的有限序列 *除了第一个元素没有直接前驱和最后一个没有直接后驱之外,其余的每个元素只有一个直接前驱和直接后驱: (a1,a2-an) [特征: *有 ...

  2. 表单必填标星_怎么用JS做form表单验证,要详细代码,求救!(带星号的是必填项)...

    匿名用户 1级 2014-06-17 回答 举个例子吧: <input type="text" id="telephone" > <input ...

  3. java线性表删除第i个元素_第08话:线性表删除某个元素

    根据之前定义的线性表ADT,现在还剩下一个操作,就是删除了.今天把这个操作弄完. 了解线性表的插入,就很容易理解线性表的删除了.删除就是插入的逆过程. 删除算法的思路: 如果删除位置不合理,抛出异常: ...

  4. mysql表一定要主键吗_最滋补五脏的食物表,一定要给家人存下

    原标题:最滋补五脏的食物表,一定要给家人存下 我们人体内的主要器官就是心.肝.脾.肺.肾,只要养好它们身体就会棒棒哒~那滋补五脏,我们要吃些什么食物呢?往下看你就知道了! 养心的食物 1.桂圆 可用桂 ...

  5. mysql筛选两个表有相同项的数据库_用SQL查询两个表中相同的数据

    展开全部 1.创建测试表: create table test_col_1(id number, var varchar2(200)); create table test_col_2(id numb ...

  6. 集群节点数和分片数关系_离子晶体配位数与离子半径比的关系

    孩子.家长都需要的心理测试:情商测试.专业心理健康测评.专注力评估.学生考试心理健康测试.家长胜任能力测试等12项. 点击下图即可进入测试,测试结果可以发到您的微信,为您的决策提供帮助! 教师简介 东 ...

  7. java与jsp的关系_浅谈servlet与jsp的关系

    servlet是用java语言编写的,是一个java类.主要功能是用来接受.处理客户端的请求,并把处理结果返回到客户端显示.Jsp是servlet发展后期的产物.在没有jsp之前,servlet利用输 ...

  8. 简述相关与回归分析的关系_浅谈相关分析与回归分析的关系

    浅谈相关分析与回归分析的关系 郝依寒 [期刊名称] <数字通信世界> [年 ( 卷 ), 期] 2018(000)004 [摘要] 本文以回归分析及回归分析的应用为对象做出简要论述 , 通 ...

  9. java跟微服务什么关系_分布式和微服务是什么关系?

    分布式和微服务是什么关系?简单来说,分布式和微服务的概念比较相似,分布式属于微服务.但是分布式和微服务在架构.作用和粒度上有所区别.因此,两者的关系是既相互联系又相互区别.本文主要带大家认识分布式和微 ...

  10. 一阶导与二阶导的关系_数学分析|第九章 定积分关于二阶导函数正负和定积分结合证明不等式问题总结...

    当公式或文字展 示不完全时,记得向左←滑动哦! 摘要: 当题目中给出二阶导函数正负时,可以得到函数和导函数存在某种不等式关系,此时需要两边进行积分,积分时一定要注意积分变量的选取.[公众号:岩宝数学考 ...

最新文章

  1. 今日宇宙最热科技:人工智能可预测死亡时间,马斯克拿下美空军1.3亿合同!...
  2. 选择Data类型在Access与Sql中的区别
  3. MPLS自身的优点所带来的网络便捷—Vecloud微云
  4. 密码技术--国密SM4分组密码算法及Go语言应用
  5. MySQL数据库基本的“增删改查”操作 -《狗嗨默示录》-
  6. app engine_App Engine中的Google Services身份验证,第2部分
  7. BZOJ3040:最短路——题解
  8. 9张图总结一下阿里云的2019
  9. php自动合并,php实现合并数组并去除重复的方法
  10. 公布 | 中国图象图形学学会首批Fellow名单公布
  11. 自定义序列化和反序列化的java实现
  12. windows temp用户问题
  13. mongodb 创建用户
  14. 21天学通JAVA之事务处理
  15. -f linux_SAIL-F-8-2-4-0-12流量积算仪-老友网
  16. Nginx一个server主机上80、433http、https共存
  17. 计算机音乐谱魔法城堡,《魔法城堡》简谱 TFBOYS 乐谱 - 新芭网
  18. oracle用par文件导出dmp文件及导入dmp文件
  19. java工控_用java做工控的大神进
  20. linux网站如何添加swf支持,linux上查看swf文件.靠谱

热门文章

  1. CBD将建智慧城市管理平台
  2. PHP中钩子函数的实现与认识
  3. 设计模式之美:Builder(生成器)
  4. fastreport(B)
  5. 通过 Socket 实现 UDP 编程 入门
  6. linux 主流 集群 软件,Linux 高可用(HA)集群之Pacemaker详解
  7. android 字体加粗_Android小技巧之TextView字体加粗
  8. c++在数组中添加元素_LeetCode 题解 | 1157. 子数组中占绝大多数的元素
  9. 精英主板bios_各品牌主板和品牌电脑启动项与bios启动键大全!!值得收藏
  10. python opencv 中文_OpenCV-Python在图片上输出中文