一对多关系
models.ForeignKey() # 定义在多的类中。
多对多关系
models.ManyToManyField() # 定义在哪个类中都可以。
一对一关系
models.OneToOneField() # 定义在哪个类中都可以。
一对多关联:
应用名/models.py(模型,定义模型类,models.ForeignKey):
from django.db import models
# 一个图书对应多个英雄人物
# 图书类(一类)
class BookInfo(models.Model):
# 图书名称
title = models.CharField(max_length=20)
# 英雄人物类(多类)
class HeroInfo(models.Model):
# 英雄名
name = models.CharField(max_length=20)
# 关联属性 (定义在多的一方)
book = models.ForeignKey('BookInfo') # 对应数据库表中的字段book_id。
# heroInfo.book是BookInfo对象; heroInfo.book_id只是BookInfo对象的id
多对多关联:
应用名/models.py(模型,定义模型类,models.ManyToManyField):
from django.db import models
# 新闻和新闻类型是多对多的关系
# 新闻类
class NewsInfo(models.Model):
# 新闻标题
title = models.CharField(max_length=128)
# 关联属性, 代表新闻类型
# news_type = models.ManyToManyField('NewsType') # 定义在新闻类或新闻类型类中都可以。
# 新闻类型类
class NewsType(models.Model):
# 类型名
type_name = models.CharField(max_length=20)
# 关联属性,代表关联的新闻
type_news = models.ManyToManyField('NewsInfo') # 定义在新闻类或新闻类型类中都可以。
一对一关联:
应用名/models.py(模型,定义模型类,models.OneToOneField):
from django.db import models
# 员工基本信息类和详细信息类是一对一的关系
# 员工基本信息类
class EmployeeBasicInfo(models.Model):
# 姓名
name = models.CharField(max_length=20)
# 关联属性,代表员工的详细信息
employee_detail = models.OneToOneField('EmployeeDetailInfo') # 定义在基本信息类或详细信息类中都可以。
# 员工详细信息类
class EmployeeDetailInfo(models.Model):
# 联系地址
addr = models.CharField(max_length=256)
# 关联属性,代表员工基本信息
# employee_basic = models.OneToOneField('EmployeeBasicInfo') # 定义在基本信息类或详细信息类中都可以。
自关联(自己关联自己):
应用名/models.py(模型,定义模型类,models.ForeignKey):
from django.db import models
# 自关联
# 地区模型类,存储省、市、区县信息
class AreaInfo(models.Model):
title = models.CharField(max_length=30) # 名称
parent = models.ForeignKey('self') # 自关联。