欢迎光临散文网 会员登陆 & 注册

Pycharm开发Django的外键和表关系

2021-10-09 11:11 作者:app毒  | 我要投稿

外键和表关系

外键:

在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持外键约束的。外键的存在使得ORM框架在处理表关系的时候异常的强大。因此这里我们首先来介绍下外键在Django中的使用。


类定义为class ForeignKey(to,on_delete,**options)。第一个参数是引用的是哪个模型,第二个参数是在使用外键引用的模型数据被删除了,这个字段该如何处理,比如有CASCADE、SET_NULL等。这里以一个实际案例来说明。比如有一个User和一个Article两个模型。一个User可以发表多篇文章,一个Article只能有一个Author,并且通过外键进行引用。那么相关的示例代码如下:


class User(models.Model):

    username = models.CharField(max_length=20)

    password = models.CharField(max_length=100)



class Article(models.Model):

    title = models.CharField(max_length=100)

    content = models.TextField()


    author = models.ForeignKey("User",on_delete=models.CASCADE)

以上使用ForeignKey来定义模型之间的关系。即在article的实例中可以通过author属性来操作对应的User模型。这样使用起来非常的方便。示例代码如下:


article = Article(title='abc',content='123')

author = User(username='张三',password='111111')

article.author = author

article.save()


# 修改article.author上的值

article.author.username = '李四'

article.save()

为什么使用了ForeignKey后,就能通过author访问到对应的user对象呢。因此在底层,Django为Article表添加了一个属性名_id的字段(比如author的字段名称是author_id),这个字段是一个外键,记录着对应的作者的主键。以后通过article.author访问的时候,实际上是先通过author_id找到对应的数据,然后再提取User表中的这条数据,形成一个模型。


Pycharm开发Django的外键和表关系的评论 (共 条)

分享到微博请遵守国家法律