django-关联关系
一对一的关联关系 OneToOne
MySQL 一对一 建表
方式一: 外键
create table t_user(
id int primary key auto_increment ,
....
);
create table t_user_info (
id int primary key auto_increment ,
...
user_id int unique ,
contraint 外键名 foreign key(user_id) references t_user(id)
)
方式二 : 共享主键
create table t_user(
id int primary key auto_increment ,
....
);
create table t_user_info (
id int primary key ,
...
contraint 外键名 foregin key(id) references t_user(id)
)
django 模型 定义 一对一的关联关系 (OneToOneField)
stu = models.OneToOneField(to=Student, on_delete=models.CASCADE, blank=True)
多对一的关联关系 ManyToOne
mysql 在 多的一方维护一的一方的关系
school = models.ForeignKey(to=School, on_delete=models.CASCADE , blank=True, null=True)
多对多的关联关系 ManyToMany
mysql 多对多维护关系, 中间表维护关系
create table t_student(
...
)
create table t_teacher(
...
)
create table t_teacher_student(
tea_id int ,
stu_id int ,
primary key(tea_id , stu_id)
)
create table t_teacher_student(
int int primary key auto_increment ,
tea_id int ,
stu_id int ,
);
students = models.ManyToManyField(to=Student, db_table="中间表表名", blank=True)
“”"
中间表 默认建表的规则 是 应用名_类名_关系属性名 ,表中关系字段的名字为 模型名小写_id
并在中间表中,存在一个主键id字段
“”"