参考:https://blog.csdn.net/pugongying1988/article/details/72870264

关系字段:一对一,多对一,多对多

 一对一:  现在有很多一对一辅导班,也就是上课时,一个老师对应一个学生,一个学生对应一个老师

  多对一:  很多偏远山区的学校可能整个学校只有一个老师,这一个老师对应多个学生,所有的学生对应这一个老师

  多对多:  而我们则很幸福,学校里有许多老师,一个老师教习一科,学生有多个老师,老师有多个学生。

除了上面的Fields,还有关系Field:

  1. ForeignKey,对应的是一对多的关系,可以指定关联删除-**on_delete=models.CASCADE**,如果要关联的对象还没有定义好,可以使用其名字。
    1. limit_choices_to,可以限制关联返回的内容。
    2. related_name,可以让关联的对象反查到源对象,如果不想创建反向关联,则设置为"+"即可。需要注意的是,如果没有使用该Field,那么想要使用反向关联,则需要**foo_set**,foo为关联对象的小写名称,如果使用了该Field,则可以直接使用自己定义的名称。
    3. related_query_name,和上面的作用类似,同样可以反向查询,两者只需要设置一个即可。
    4. to_field,指定关联对象的字段名称,默认情况下为对方的主键。
    5. db_constraint,控制是否在数据库中为这个外键创建约束,默认为True。
    6. on_delete,可以实现CASCADE,级联删除;PROTECT,防止被引用对象删除,抛出ProtectedError;SET_NULL,将其设置成null;

SET_DEFAULT,设置成默认值;SET,可以传递值,同时还可以传递可调用对象;DO_NOTHING,不采取任何动作。

  1. ManyToManyField,对应的是多对多的关系。
    1. symmetrical,只用在自己对自己进行关联的时候。比如说Friend,你的朋友是我,我的朋友是你。
    2. through,如果不想要Django自动创建的多对多的关系表,可以通过指定through指定自己定义的中介表。
    3. through_fields,在上面的基础上指定中间模型的**哪些字段**来建立是多对多关联。
    4. db_table,设定多对多关系表的名称。
    5. db_constraint,同上。
    6. swappable,
  2. OneToOneField,对应的是一对一的关系,其可以直接返回关系另一边的对象,最主要的用途是作为扩展自另外一个模型的主键。比如多表继承就是利用这样的原理,通过对子模型添加一个隐式的一对一关联关系到父亲模型实现的。

    如果你没有指定其的related_name参数,那么Django将使用当前模型的小写名称作为默认值。
    如果访问相应的对象不存在的话,则会抛出ObjectDoesNotExist的异常。
    当设置**parent_link**为True时,??

Python之关系字段的更多相关文章

  1. python 之 Django框架(ORM常用字段和字段参数、关系字段和和字段参数)

    12.324 Django ORM常用字段 .id = models.AutoField(primary_key=True):int自增列,必须填入参数 primary_key=True.当model ...

  2. django--orm关系字段(ForeignKey、OneToOneField、ManyToManyField)详解

    django中的关系字段 1.ForeignKey字段,即外键字段,对应一对多的情况,列如:一本书对应一个出版社,一个出版社可对应多本书. 2.ManyToManyFiled字段,即多对多字段,对应数 ...

  3. Django框架之第六篇(模型层)--单表查询和必知必会13条、单表查询之双下划线、Django ORM常用字段和参数、关系字段

    单表查询 补充一个知识点:在models.py建表是 create_time = models.DateField() 关键字参数: 1.auto_now:每次操作数据,都会自动刷新当前操作的时间 2 ...

  4. 06 ORM常用字段 关系字段 数据库优化查询

    一.Django ORM 常用字段和参数 1.常用字段 models中所有的字段类型其实本质就那几种,整形varchar什么的,都没有实际的约束作用,虽然在models中没有任何限制作用,但是还是要分 ...

  5. Python字典列表字段重组形成新的字典

    最近遇到这样一个需求,需要将字典列表中的字段进行重组,形成一个新的字典.举个例子吧: l1 = [{"x": 22, "y": 22, "demand ...

  6. Python学习教程(learning Python)--3.3.3 Python逻辑关系表达式

    在if分支判断语句里的条件判断语句不一定就是一个表达式,可以是多个(布尔)表达式的组合关系运算,这里如何使用更多的关系表达式构建出一个比较复杂的条件判断呢?这里需要再了解一下逻辑运算的基础知识.逻辑关 ...

  7. Python学习教程(learning Python)--3.3.2 Python的关系运算

    如果if的condition不用布尔表达式来做条件判断而采用关系表达式,实际上关系表达式运算的结果要么是True要么是False.下面我们先了解一些有关关系运算符的基础知识,如下表所示. 做个小程序测 ...

  8. Python面向对象关系

    首先了解一下Python面向对象中类型-实例和父类-子类的关系.下面的一些规则很有用. 当我们介绍许多不同的对象时,我们只用了两种关系(图4.1 关系): 是一类(is a kind of)(实线): ...

  9. Python学习入门基础教程(learning Python)--3.3.3 Python逻辑关系表达式

    在if分支判断语句里的条件判断语句不一定就是一个表达式,可以是多个(布尔)表达式的组合关系运算,这里如何使用更多的关系表达式构建出一个比较复杂的条件判断呢?这里需要再了解一下逻辑运算的基础知识.逻辑关 ...

随机推荐

  1. windows下,java环境变量的设置,设置点击startup.bat启动tomcat

    1.首先.安装好java jdk以后环境变量设置: CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar JAVA_HOME:C:\ ...

  2. python 网络编程要点

    From http://www.zhihu.com/question/19854853 Python网络编程是一个很大的范畴,个人感觉需要掌握的点有:1. 如何使用Python来创建socket, 如 ...

  3. md5,base64,rsa

    MD5功能:    输入任意长度的信息,经过处理,输出为128位的信息(数字指纹):    不同的输入得到的不同的结果(唯一性):    根据128位的输出结果不可能反推出输入的信息(不可逆): 1. ...

  4. mybatis 生成 映射文件生成工具 mybatisGenerator 使用

    第一:新建 generatorConfig.xml 文件 ,写入下面的 内容 <?xml version="1.0" encoding="UTF-8"?& ...

  5. hadoop入门篇-hadoop下载安装教程(附图文步骤)

    在前几篇的文章中分别就虚拟系统安装.LINUX系统安装以及hadoop运行服务器的设置等内容写了详细的操作教程,本篇分享的是hadoop的下载安装步骤. 在此之前有必要做一个简单的说明:分享的所有内容 ...

  6. MySqli 执行多条SQL语句

    使用multi_query();  去执行SQL语句,执行多条语句多个SQL语句用“;”分开 一:没有结果集的语句: $sql="insert into products (cid,name ...

  7. js实现动态球形标签云

    HTML 原文演示地址:http://www.17sucai.com/pins/demoshow/8108 <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...

  8. vscode美化方法以及定制主题插件

    首先是学会调整字体和字体大小 换成你看着舒服的字体和字体大小,当然,通常情况下默认的就很好看,但每个人的显示屏参数不同显示起来的效果因人而异,如果你有更好的方案不妨设置一下 下面展示我的浅色主题和深色 ...

  9. bzoj 3978: [WF2012]Fibonacci Words

    Description 斐波那契01字符串的定义如下 F(n) = { 0  if n = 0 1  if n = 1 F(n-1)+F(n-2) if n >= 2 } 这里+的定义是字符串的 ...

  10. bzoj3668 起床困难综合症

    Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找 ...