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

Django 2.1设置ForeignKey时的非空约束

在Django 2.1中,当设置ForeignKey时,默认情况下会创建一个非空约束。ForeignKey是一种关系字段,用于在数据库中建立表与表之间的关联关系。非空约束表示该字段的值不能为空,必须引用其他表中的一个有效记录。

非空约束的优势是确保数据的完整性和一致性。它可以防止在数据库中插入无效的外键值,从而避免数据的不一致性和错误。

应用场景:

  1. 在一个订单系统中,订单表(Order)和用户表(User)之间建立关联关系,可以使用ForeignKey。订单表中的user_id字段作为外键,引用用户表中的主键id,确保每个订单都有一个有效的用户。
  2. 在一个博客系统中,文章表(Article)和分类表(Category)之间建立关联关系,可以使用ForeignKey。文章表中的category_id字段作为外键,引用分类表中的主键id,确保每篇文章都属于一个有效的分类。

推荐的腾讯云相关产品和产品介绍链接地址: 腾讯云提供了多种云计算产品和服务,其中与数据库相关的产品包括云数据库MySQL、云数据库MongoDB等。这些产品可以满足不同规模和需求的数据库存储和管理需求。

  • 云数据库MySQL:腾讯云的云数据库MySQL是一种高性能、可扩展的关系型数据库服务。它提供了自动备份、容灾、监控等功能,支持主从复制、读写分离等特性,适用于各种Web应用、移动应用和游戏等场景。详细信息请参考:云数据库MySQL
  • 云数据库MongoDB:腾讯云的云数据库MongoDB是一种高性能、可扩展的NoSQL数据库服务。它提供了自动备份、容灾、监控等功能,支持副本集、分片等特性,适用于大数据存储、实时分析、物联网等场景。详细信息请参考:云数据库MongoDB

以上是关于Django 2.1设置ForeignKey时的非空约束的完善且全面的答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

:浅谈约束影响

而实际上,优化器在选择执行计划约束是一个重要影响因素。为了说明问题,我们建立以下测试表,然后分别说明约束在各种情况下对执行计划和性能影响。...之所以优化器会为执行计划增加这样一个filter,是因为优化器在做查询转换(Query Transformation),会将约束作为参照条件之一,对where子句谓词做逻辑结果评估,如果评估结果为...我们来看执行计划 统计信息如下 约束对连接查询影响 在进行数据关联,数据集中关联字段是否存在值也会影响优化器对执行计划选择。我们再创建一张测试表。...再将subobject_name约束去掉。...注意:当逻辑表达是中操作数可能为,LNNVL函数可以判断出该表达式结果。 我们再把约束加上, 统计信息如下 可以看到执行计划通过ANTI-JOIN获取我们需要数据,性能大为改善。

3.1K40

MySQL数据库——表约束(约束、唯一约束、主键约束、外键约束)

目录 1 表约束 约束,是对表中数据进行限定,保证数据正确性、有效性和完整性,约束分为以下几类: 主键约束:primary key 约束:not null 唯一约束:unique 外键约束:foreign...key 1.1 约束:not null 1)在创建表添加约束: CREATE TABLE stu( id INT, NAME VARCHAR(20) NOT NULL -- name为...); 2)创建表后再添加约束: ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;  3)删除name约束: ALTER TABLE stu MODIFY...UNIQUE ); 注意:MySQL中唯一约束限定值可以有多个null 2)删除唯一约束: -- alter table stu modify number varchar(20); 不同于约束删除方法...主键约束:primary key 1)注意: 若某一列添加了该约束,则代表了,且唯一; 一张表只能有一个字段为主键; 主键就是表中记录唯一标识; 2)创建表添加主键约束 CREATE TABLE

13.6K21

django 字段类型_access数据库类型是

默认情况下,BinaryField设置editable为False,在这种情况下,他不能包含在ModelForm中,在django2.1中进行了修改:旧版本不允许设置editable为True。...**注意:**在模型中使用FileField或ImageField,需要执行以下几个步骤: l 在settings.py中定义MEDIA_ROOT为django设置存储上载文件目录完整路径(这些文件并未直接存储在数据库中...当删除由a引用对象Django将模拟on_delete参数指定SQL约束行为。...例如:如果有一个可为字段,并且在删除引用对象将其设置,如 user = models.ForeignKey( ​ User, ​ models.SET_NULL, ​...Django会在DELETE CASCADE上模拟 SQL约束行为,并删除包含ForeignKey对象。 **DO_NOTHING:**不采取行动。

3.8K30

探索 PythonDjango 支持分布式多租户数据库,如 Postgres+Citus

在所有主键和唯一约束中包含 account_id 2.1 将 account_id 包含到主键中 2.2 将 account_id 包含到唯一约束中 3....一旦您开始分片数据,这就会成为一个问题,特别是当您对嵌套模型(如本例中任务)运行 UPDATE 或 DELETE 查询。 1....在所有主键和唯一约束中包含 account_id 2.1 将 account_id 包含到主键中 Django 会自动在模型上创建一个简单 “id” 主键,因此我们需要通过自己自定义迁移来规避这种行为...您可以使用 unique=True 或 unique_together 在模型中设置显式约束,例如: class Project(models.Model): name = models.CharField...tenant_id = 'account_id' objects = TenantManager() 3.2 处理外键约束 对于 ForeignKey 和 OneToOneField 约束,我们有几种不同情况

2K10

django自定义主键自增字段类型详解(auto increment field)

1.django自定义字段类型,实现主键字段自增 # -*- encoding: utf-8 -*- from django.db.models.fields import Field, IntegerField...null(前提FK字段需要设置为可) - models.SET_DEFAULT,删除关联数据,与之关联设置为默认值(前提FK字段需要设置默认值) - models.SET,删除关联数据, a....与之关联设置为可执行对象返回值,设置:models.SET(可执行对象) def func(): return 10 class MyModel(models.Model): user = models.ForeignKey...= models.CharField(max_length=64) db_constraint=True, # 是否在数据库中创建外键约束 db_table=None, # 默认创建第三张表,数据库中表名称...自定义主键自增字段类型详解(auto increment field)就是小编分享给大家全部内容了,希望能给大家一个参考。

2.2K10

基于Django OneToOneField和ForeignKey区别详解

,若进行删除操作则抛出错误 SET_NULL 将ForeignKey置为,这只在null选项为True时候产生作用 SET_DEFAULT 设为默认值(default value),此默认值已预先对...ForeignKey设置 SET() 对ForeignKey设置对SET()函数传递数值 DO_NOTHING 不进行任何操作。...通过一个限制对字段信息某一可能选项进行约束,可以通过字典,函数或者查询值来设置 related_name 可以指定关联类在本类中名称,通过这一参数可以用两个字段名引用同一个类,通过这个名称父类可以取得子类值...,若不设置则默认为字段名称 db_contraint 是否在数据库中建立约束 swappable 设置是否指向一个可交换模型 OneToOneField 源码中对OneToOneField设置如下...中参数,又包含一个额外参数parent_link,若定义了一个类,其继承了一个抽象类,而设置parent_link这个函数为True,则会将这个类视作继承父类,而不是一个新OneToOneField

2.3K20

【云+社区年度正文】Django从入门到精通No.2----模型

三、模型字段和约束 这里我们需要在he文件夹中找到models.py文件,然后我们试着改动一下这个文件内容,如下: from django.db import models ​ # Create your...注:数据参考来源w3cschool 上面的字段很容易让人想起数据库中数据类型,所以这些字段也就会有约束,常用约束如下: null:字段是否可以为 blank:是否允许用户输入为 db_column...null(前提FK字段需要设为可) - models.SET_DEFAULT 删除关联数据,与之关联值设为默认值(前提FK字段设置默认值)...与之关联设置为可执行对象返回值,设置:models.SET(可执行对象) related_name=None # 反向操作,使用字段名,用于代替表名_set related_query_name...django数据操作,django内置了一款非常到位系统管理员登陆设计系统,首先我们创建下用户,如下: python manage.py createsuperuser 然后我们按照要求一步步设置参数

2.1K00

Django 学习笔记之模型高级用法(上)

通常不需要直接使用它,如果表中没有设置主键Django 将会自动添加一个自增主键。BigAutoField 其实也是一个 BigIntegerField,但它支持 ID 自动增长。...2.1 ForeignKey 1) on_delete 在 Django 2.0 中,设置外键需要添加一个 on_delete选项。外键本身涉及到两个表数据,况且外键在数据库中是有约束行为。...所以 on_delete 参数是 Django 模拟 SQL 约束行为。 on_delete 有几个可选值: CASCADE:这就是默认选项,级联删除,你无需显性指定它。...SET_NULL: 置模式,删除时候,外键字段被设置,前提就是`blank=True, null=True`,定义该字段时候,允许为。...比如这个例子中描述名是 person's first name: first_name = models.CharField("person's first name", max_length=30) 而没有主动设置

2K30

django 外键引用自身和on_delete参数

SET_NULL:设置。如果外键那条数据被删除了,那么在本条数据上就将这个字段设置。如果设置这个选项,前提是要指定这个字段可以为。 SET_DEFAULT:设置默认值。...注意:以上配置都是django级别的,在数据库中级别依旧是RESTRICT 数据库层面的约束有: RESTRICT:默认选项,如果想要删除父表记录,而在子表中有关联该父表记录,则不允许删除父表中记录...、update时候,子表会将关联记录外键字段所在列设为null,所以注意在设计子表外键不能设为not null; 为什么在django中可以是用不同约束去操作数据库呢。...比如 django 中 on_delete=CASCADE, 但是数据库外键约束是RESTRICT....在进行删除A表数据,发现被外键约束着,使数据不能被删除,则django会先去删除约束B表数据,然后再来删除A表数据。

1.3K20

Django官方文档小结(一) -- Models模型

Django 关系字段 本文主要内容是关于Django框架中models知识小结 #1 环境 Python3.7.3 Django==2.0.7 #2 字段 #2.1 一对多(ForeignKey)...(to='self', on_delete=models.CASCADE) #2.3 关联关系 on_delete=None, # 删除关联表中数据,当前表与其关联field..., blank=True, null=True) on_delete=models.SET_NULL, # 删除关联数据,与之关联设置为null(前提FK字段需要设置为可,一对一同理) #...与之关联设置为指定值,设置:models.SET(值) b....与之关联设置为可执行对象返回值,设置:models.SET(可执行对象) #2.4 数据库表示 在生成数据库Django追加"_id"字段名称来创建其数据库列名,可以通过指定显式更改此内容db_column

75520

Django之ORM字段和参数

外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 '一对多'中'多'一方。    ...null(前提FK字段需要设置为可) models.SET_DEFAULT 删除关联数据,与之关联设置为默认值(前提FK字段需要设置默认值) models.SET 删除关联数据,  与之关联设置为指定值...,设置:models.SET(值) 与之关联设置为可执行对象返回值,设置:models.SET(可执行对象) ---- db_constraint    是否在数据库中创建外键约束,默认为True...---- related_query_name 同ForeignKey字段。 ---- symmetrical               仅用于多对多自关联,指定内部是否创建反向操作字段。...---- through      在使用ManyToManyField字段Django将自动生成一张表来管理多对多关联关系。

2.3K60

django模型动态修改参数,增加 filter 字段方式

其它属性详情请查看:官方文档 关系字段 ForeignKey 外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 ‘一对多’中’多’一方。...字段参数: - to:设置要关联表 - to_field:设置要关联字段 - related_name:反向操作,使用字段名,用于代替原反向查询'表名_set'。...null(前提FK字段需要设置为可) models.SET_DEFAULT:删除关联数据,与之关联设置为默认值(前提FK字段需要设置默认值) models.SET:删除关联数据, a....字段参数: to:设置要关联表 related_name:同ForeignKey字段。 related_query_name:同ForeignKey字段。...through:在使用ManyToManyField字段Django将自动生成一张表来管理多对多关联关系。

3.8K31

ORM常用字段介绍

关系字段 ForeignKey 外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 '一对多'中'多'一方。...字段参数 to 设置要关联表 to_field 设置要关联字段 related_name 反向操作,使用字段名,用于代替原反向查询'表名_set'。...null(前提FK字段需要设置为可) models.SET_DEFAULT 删除关联数据,与之关联设置为默认值(前提FK字段需要设置默认值) models.SET 删除关联数据, a....字段参数 to 设置要关联表。 to_field 设置要关联字段。 on_delete 同ForeignKey字段。 ManyToManyField 用于表示多对多关联关系。...字段参数 to 设置要关联表 related_name 同ForeignKey字段。 related_query_name 同ForeignKey字段。

2.5K10
领券