1. 一对一关联关系
-
使用方法
数据库体现 Django程序模型 通过外键关联,外键要设在多的一方 OneToOneField() #在 models 文件里设置 class 属性 OneToOneField #关联属性要设置在后边的类里,不然会报错。因为程序是按顺序执行的。 #一般关联属性直接设置为前者类名,关系设定后直接调用对应的类名即可 class Boy(models.Model): ..... class Girl(models.Model): ...... boy=models.OneToOneField(Boy,null=True,blank=True) #根据实际选择是否为空(null=True,blank=True),允许为空的话添加对象时可以先没有关联对象; #关联属性如果不为空,添加对象时必须把关联对象一并添加,否则无法创建对象。
-
注意事项
如果前期双方没有关联,后来添加对关联属性时,应都通过后一个 class (设置有一对一关联属性的类)添加,不然无法添加关联属性。#如:Girl类里设置有Boy属性。在选择关联属性配偶保存时,女选男用: girl.boy=boy girl.save() #当男选女时一样用女类来保存关联属性男,使双方关联。
2. 一对多关联关系
-
使用方法
例子:一个人能有多个手机号码,一个号码只能属于一个人。数据库体现 Django程序模型 1.通过外键关联,外键要设在多的一方。 models.ForeignKey() 设置在多的一方。 2 中间表关联,多得一方要设置唯一约束。 -
注意及小方法
手机号一定属于一个人,不能为空。
创建属性时:多的一方要有对应类的一个对象。
查找一个对象关联对象的所有:models.User.objects.say_set.all
3. 多对多关联关系
-
使用方法
例子:老师与学生的关;一个老师对应多个学生,一个学生对应多个老师。数据库体现 Django程序模型 中间表关联 models.ManyToManyField()
4.附加
- 网站不同用户菜单不同实现:
定义 Type 类型,User 类型(一对多Type),Menu 类型(一对多Type)
Type有两个对象,会员和管理员。
Menu类型,不同的 type 能读取不同的菜单列表。
User 通过与 type 的关联实现不同用户的不同类型 menu。
网友评论