首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django(15)外键和表关系

外键删除操作 如果一个模型使用了外键。那么在对方那个模型被删掉后,该进行什么样的操作。可以通过on_delete来指定。可以指定的类型如下: CASCADE:级联操作。...如果外键对应的那条数据被删除了,那么这条数据也会被删除。 PROTECT:受保护。即只要这条数据引用了外键的那条数据,那么就不能删除外键的那条数据。 SET_NULL:设置为空。...如果外键的那条数据被删除了,那么本条数据上就将这个字段设置为默认值。如果设置这个选项,前提是要指定这个字段一个默认值。 SET():如果外键的那条数据被删除了。...注意:以上这些选项只是Django级别的,数据级别依旧是RESTRICT! 表关系 表之间的关系都是通过外键来进行关联的。而表之间的关系,无非就是三种关系:一对一、一对多、多对多等。...这个OneToOneField其实本质上就是一个外键,只不过这个外键有一个唯一约束(unique key),来实现一对一。 以后如果想要反向引用,那么是通过引用的模型的名字转换为小写的形式进行访问。

2.1K40

Django外键模型未保存引用

在 Django 中使用外键关系时,如果遇到模型未保存引用的问题,通常是因为在创建或更新相关对象时,有关联对象未被正确保存或引用。这里提供一些常见的问题和解决方案来确保你的外键关系正确处理。...1、问题背景在使用 Django 进行模型开发时,遇到一个问题,外键模型无法保存引用。...这种方式会导致外键引用丢失,因为在保存 UserProfile 模型时,u 还没有被保存,因此引用关系无法建立。正确的做法是先保存 UserProfile 模型,然后再保存用户模型 u。...外键模型无法保存引用的问题。...通过注意这些常见问题和采取正确的操作步骤,可以确保 Django 中的外键关系被正确处理,避免数据一致性和完整性问题。

6010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    django 外键引用自身和on_delete参数

    该模型使用外键引用自己本身。...如果外键对应的那条数据被删除了,那么这条数据也会被删除。 PROTECT:受保护。即只要这条数据引用了外键的那条数据,那么就不能删除外键的那条数据。如果我们强行删除,Django就会报错。...、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null; 为什么在django中可以是用不同的约束去操作数据库呢。...比如 django 中 on_delete=CASCADE, 但是数据库的外键约束是RESTRICT....在进行删除A表数据时,发现被外键约束着,使数据不能被删除,则django会先去删除约束的B表数据,然后再来删除A表数据。

    1.4K20

    Django学习-第七讲:django 中的常用字段、字段属性,外键和表关系、外键操作

    在django中是有时区的概念的,使用时要考虑到时区的问题,默认使用的是 UTC时区,分为 navie(没时区) 和 aware(有时区),如果项目不是国际的,可以我们将时区关闭,使用本地的时间。...因为Django在处理字符串相关的Field的时候,即使这个Field的null=False,如果你没有给这个Field传递任何值,那么Django也会使用一个空的字符串""来作为默认值存储进去。...外键和表关系 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持外键约束的。外键的存在使得ORM框架在处理表关系的时候异常的强大。...因此这里我们首先来介绍下外键在Django中的使用。 类定义为class ForeignKey(to,on_delete,**options)。...因此在底层,Django为Article表添加了一个属性名_id的字段(比如author的字段名称是author_id),这个字段是一个外键,记录着对应的作者的主键。

    4K30

    如何使用 Django 更新模型字段(包括外键字段)

    本教程将详细介绍如何通过 Django 更新模型字段,重点讨论了解决外键字段更新的方法,特别是使用 attrs 方式的实现。1. 简介Django 中的模型是应用程序中管理数据的核心部分。...当模型之间存在关系,特别是外键关系时,如何有效地更新这些关系是开发人员需要注意的重要问题之一。2. 设计模型我们将以一个简单的案例来说明如何更新模型字段。...下面我们详细探讨这种更新方式:使用 attrs 方式更新外键字段在 Django 中,可以直接通过设置外键字段的方式来更新模型中的外键关联。...高级用法:使用 update() 方法批量更新字段除了直接设置外键字段外,还可以使用 Django 的 update() 方法来批量更新查询集中的对象。...总结与实践建议在本教程中,我们深入探讨了如何使用 Django 更新模型字段,特别是处理外键字段更新的方法。

    28010

    django模型中有外键关系的表删除相关设置

    0904自我总结 django模型中有外键关系的表删除相关设置 一.一对一 例如有Author、AuthorDetail两表 author = models.OneToOneField(to='Author...related_name(detail),详情找作者用 外键字段(author) 3)db_constraint断开表关联,on_delete规定逻辑关联删除动作,models.CASCADE级联删除...,书删除没有任何影响 2)出版社找书用 外键related_name(books),书找出版社 外键字段(publish) 3)db_constraint断开表关联,on_delete规定逻辑关联删除动作...,models.DO_NOTHING关联无动作 三.以外键字段关联 1)断关联,删除关联表记录,外键值置空 db_constraint=False, on_delete=models.SET_NULL...,反向找 外键字段related_name 3)db_constraint断开表关联,on_delete不存在(不设置,本质在第三张表中设置,且一定是级联)

    3K20

    Django外键(ForeignKey)操作以及related_name的作用

    之前已经写过一篇关于Django外键的文章,但是当时并没有介绍如何根据外键对数据的操作,也就是如何通过主表查询子表或者通过子表查询主表的信息 首先我定义了两个模型,一个是老师模型,一个是学生模型,...: 第一步需要做的自然还是需要将我们的模型导入进来,并获取老师的相关信息 返回一个teacher对象,接下来就是查询teacher相关联的学生对象,在这里有一个需要注意的点,django...默认情况下每一个主表的对象都有一个是外键的属性,可以通过它查询到所有关于子表的信息,这个属性的名字就是子表的名称小写加上_set,具体到这个就是student_set,默认返回的是QuerySet,操作如下...: 在这里也会牵涉到另外一个知识点related_name的使用,在models.py使用Foreign定义外键的时候也可以传入一个参数related_name,操作如下: 执行python...,那么就可以通过定义外键时候的那个外键的字段名获取关于主表的信息了 比如我得到了一个student对象,然后我想要得到这个student对象对应的主表teache中的信息的话,就使用 student.teacher

    2K10

    数据工厂平台-番外:vue和django的冲突问题

    最近有很多同学反馈说第四节 没跟住, 页面显示的并不是: 而是: 博主帮忙一个一个的解决排查问题后,发现这个问题的原因似乎好多人都不清楚。...没有通过127.0.0.1:8000/home进入页面,而是通过 直接打开了html在浏览器。...好,原因基本就上述的三种,这里我说下 为什么要这么写: 在我学习vue的文档的时候,都是用一个页面单独去学习,没有在django项目中,所有文档都成功跟下来了,很顺利。...但是后来我放入到django中的时候,发现了一个问题: 就是这样的写法 会导致,标签元素的text 不能显示。...后来我搜索一番得知: django和vue 在这个上面有个小冲突, 就是在标签中级夹着的{{ }} 会冲突,会被django误以为是要从后台直接获取数据,而不是从下面的vue的bom中拿数据,所以搜索得知

    67430

    Django 外键引用另一个表中的多个字段

    在 Django 中,外键(ForeignKey)通常只引用另一张表的一个字段,比如一个主键或一个唯一标识字段。然而,如果我们需要让一个外键引用另一张表中的多个字段,通常有以下几种方法来实现这种关系。...1、问题背景在 Django 中,模型之间的关系通常使用外键(ForeignKey)来建立。外键允许一个模型中的字段引用另一个模型中的主键。然而,有时我们需要在一个模型中引用另一个模型中的多个字段。...以下是如何在 Django 中使用复合主键来实现外键引用另一个表中的多个字段:在 product_models 模型中,添加一个 id 字段作为主键:class product_models(models.Model...max_length=3)​ def __unicode__(self): return self.model_name在 sales_process 模型中,添加一个 product 字段作为外键...划重点Django 不直接支持复合外键,但可以通过添加唯一约束、使用中间表或在查询中使用逻辑约束来实现类似效果。

    10110

    【Django 2.2文档系列】Model 外键中的on_delete参数用法

    场景 我们用Django的Model时,有时候需要关联外键。关联外键时,参数:on_delete的几个配置选项到底是干嘛的呢,你知道吗? 参数介绍 models.CASCADE 级联删除。...Django会模拟SQL约束的行为,在删除此条数据时,同事删除外键关联的对象。...比如:用户的有一个外键关联的是用户的健康记录表,当用户删除时,配置了这个参数的健康记录表中跟这个用户有关的数据也会被删除。...models.SET_NULL 设置关联的外键内容为null。只有设置了null=True时可用。当数据被删除时,被关联的外键内容被设置为null。...models.SET_DEFAULT 将外键的值设置为默认值。外键必须设置有默认值 。 models.SET()将SET()设置的值作为外键的值 ,如果传递了callable,则调用它的结果。

    2K10
    领券