Django:模型_ORM外键使用

外键

1、在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持外键约束的。外键的存在使得ORM框架在处理表关系的时候异常的强大。MySQL数据库默认使用的也是InnoDB引擎。

2、外键是相对于主键说的,是建立表之间的联系的必须的前提

3、外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束。外键用来建立和加强两个表数据之间的连接

4、比如这里有两张,user(用户)表和qx(权限)表,user中gid是用户权限id,而gid是依赖于qx中的id。那么qx中的id就是user的外键。也就是当我们给gid创建一个外键,这个外键就是qx中的id时,gid就必须与qx中id一致,我们可以通过外键使两张表进行关联。

5、MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确的索引

 

 

使用外键

1、类定义为class ForeignKey(to,on_delete,**options)
    ⑴第一个参数是引用的是哪个模型
    ⑵第二个参数是在使用外键引用的模型数据被删除了,这个字段该如何处理,比如有CASCADE、SET_NULL等(外键删除各个参数的意思)

2、这里以一个实际案例来说明。比如有一个User和一个Article两个模型。一个User可以发表多篇文章,一个Article只能有一个Author,并且通过外键进行引用,那么相关的实例代码如下:

例1:

from django.db import models

# Create your models here.
class User(models.Model):
    name = models.CharField(max_length=100)

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    # 是由User影响Article。即Article表中的category列值是根据User表中的id值来的
    category = models.ForeignKey('User',on_delete=models.CASCADE)

注:
1、这里我们就在Article中设置了一个外键category

2、以上使用ForeignKey来定义模型之间的关系。即在article的实例中可以通过category属性来操作对应的User模型。这样使用起来非常的方便

3、on_delete参数表示:如果一个模型使用了外键。那么在对方那个模型被删掉后,该进行什么样的操作(这里先大概知道这个参数是干什么的就可以)

4、因为在Django的ORM模型中肯定会有一个id列,因此所有外键默认都是通过id来进行关联的,但是实际中可能用到的不是id,而是id行下面的某一列值

例2:
⑴编辑模型

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值