学习 django 中的 orm 的时候,可以把一对多,多对多,分为正向和反向查找两种方式。
正向查找:ForeignKey 在 UserInfo 表中,如果从 UserInfo 表开始向其他的表进行查询,这个就是正向操作,反之如果从 UserType 表去查询其他的表这个就是反向操作。
① 正向连表操作
所谓正、反向连表操作的认定无非是 Foreign_Key 字段在哪张表决定的,
Foreign_Key字段在哪张表就可以哪张表使用 Foreign_Key字段连表,反之没有Foreign_Key 字段就使用与其关联的 小写表名;
1对多:对象.外键.关联表字段,values(外键字段__关联表字段)
多对多:外键字段.all()
② 反向连表操作
通过value、value_list、fifter 方式反向跨表:小写表名__关联表字段
通过对象的形式反向跨表:小写表名_set().all()
应用场景:
例如:创建用户信息时候,需要选择一个用户类型【普通用户】【VIP用户】【SVIP用户】等。
例如:创建用户信息,需要为用户指定多个爱好
例如:原有含10列数据的一张表保存相关信息,经过一段时间之后,10列无法满足需求,需要为原来的表再添加5列数据