django-关联关系

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字段
“”"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值