reboot自动化班课件-第三天-模型关系_W_第1页
reboot自动化班课件-第三天-模型关系_W_第2页
reboot自动化班课件-第三天-模型关系_W_第3页
reboot自动化班课件-第三天-模型关系_W_第4页
reboot自动化班课件-第三天-模型关系_W_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Reboot自动化班课件第三天:django模型关系3 June 2018Rock模型关系关系数据库的威力体现在表之间的相互关联,Django提供了三种最常见的数据库关系:多对一(many-to-one),多对多(many-to-many),一对一(one-to-one)多对一关系多对多关系一对一关系2多对一django是使用django.db.models.ForeignKey 定义多对一关系ForeignKey需要一个位置参数来指定本Model关联的Model,ForeignKey关联的Model是一, ForeignKey所在的Model是多比如汽车和制造商的例子,一辆汽车只能属于一个制

2、造商,但是一个制造商有多辆汽车,这个关系,用Django的Model来表示,就是class Manufacturer(models.Model):name = models.CharField(max_length=30)class Car(models.Model):manufacturer = models.ForeignKey(Manufacturer)name = models.CharField(max_length=30)3多对一查询正向查询( ForeignKey 所在的模型查询关联的模型)反向查询( ForeignKey 指向的模型查询ForeignKey 所在的模型)如果模型

3、有一个ForeignKey,那么该ForeignKey 所指的模型实例可以通过一个管理器返回前一个有ForeignKey的模型的所有实例。默认情况下,这个管理器的名字为foo_set,其中foo 是源模型的小写名称。该管理器返回的查询集可以用上一节提到的方式进行过滤和操作。manufacturer = Manufacturer.objects.get(pk=1)manufacturer.car_set.all()# 返回多个car对象4car = Car.objects.get(pk=2)car.manufacturer#返回一条Manufacturer 对象 处理关联对象的其它方法add(o

4、bj1, obj2, .) #添加一指定的模型对象到关联的对象集中。create(*kwargs)象。#创建一个新的对象,将它保存并放在关联的对象集中。返回新创建的对remove(obj1, obj2, .) #从关联的对象集中删除指定的模型对象。clear() #从关联的对象集中删除所有的对象。5多对多要实现多对多,就要使用django.db.models.ManyToManyField类,和ForeignKey一样,它 也有一个位置参数,用来指定和它关联的Model。如果不仅仅需要知道两个Model之间是多对多的关系,还需要知道这个关系的更多信息, 比如Person和Group是多对多的关

5、系,每个person可以在多个group里,那么group里可以有多个person6多对多示例class Group(models.Model): #.class Person(models.Model):建议以被关联模型名称的复数形式做为ManyToManyField 的名字在哪个模型中设置ManyToManyField 两个模型中都设置并不重要,在两个模型中任选一个即可不要在7一对一一对一是通过django.db.models.OneToOneField来实现的,被关联的Model会被加上Unique的限制, OneToOneField要一个位置参数,与模型关联的类当某个对象想扩展自另一个对象时,最常用的方式就是在这个对象的主键上添加一对一关系8groups = models.ManyToManyFie

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论