在models.py文件中通过定义类来创建表
创建一对一关系表
员工信息表:id、姓名、年龄
工资表:id、员工id、薪资(员工id与员工信息表的id一一对应)
class UserInfo(models.Model):
name = models.CharField(max_length=32,null=True)
age = models.IntegerField()
class Private(models.Model):
salary = models.CharField(max_length=32,null=True)
sp = models.OneToOneField('UserInfo') # OneToOneField对应员工表信息表的id
创建一对多关系表
班级表:id、班级名称
学生表:id、学生姓名、所在班级(关联班级表id)
class Classes(models.Model):
cname = models.CharField(max_length=32,null=True)
class Student(models.Model):
sname = models.CharField(max_length=32,null=True)
sc = models.ForeignKey('Classes') # 通过ForeignKey外键关联班级表的id
创建多对多关系表
男生表:id、姓名
女生表:id、姓名
相亲记录表:id、男生id、女生id
# 方式一:通过ManyToManyField建立多对多关系表
class Boy(models.Model):
bname = models.CharField(max_length=32,null=True)
g = models.ManyToManyField('Girl',null=True)
class Girl(models.Model):
gname = models.CharField(max_length=32,null=True)
# 方式二:自定义关系表
class Boy(models.Model):
bname = models.CharField(max_length=32,null=True)
class Girl(models.Model):
gname = models.CharField(max_length=32,null=True)
class Boy2Girl(models.Model):
b_id = models.ForeignKey('Boy') # 外键关联Boy表中的id
g_id = models.ForeignKey('Girl') # 外键关联Girl表中的id
class Meta:
# 建立联合唯一索引
unique_together = [
('b_id','g_id')
]
"""
# 这是建立联合索引
index_together=[
('b_id','g_id')
]"""
-
方式一通过ManyToManyField建立关系表,自带了联合唯一约束,会自动建立关系表,但是关系表中只有两个字段,不能添加其他字段,比较死板。
-
方式二自定义关系表可以添加其他字段,相对灵活。
可根据业务需求选择使用,但推荐使用自定义方式建表