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

django模型中有关系删除相关设置

0904自我总结 django模型中有关系删除相关设置 一.一对一 例如有Author、AuthorDetail两 author = models.OneToOneField(to='Author...) 1)关系字段放在AuthorDetail:作者删除详情删除,详情删除作者保留 2)作者找详情用 related_name(detail),详情找作者用 字段(author)...=models.DO_NOTHING, ) 1)关系字段放在Book(多一方):出版社删除书不动,书删除没有任何影响 2)出版社找书用 related_name..., models.CASCAD级联关系,'SET_NULL'置空,SET_DEFAULT设为默认值 两者区别 models.SET关联内容删了,关联相关内容不会删除 models.CASCAD关联内容删了...:出版社删除或书删除彼此不影响,但关系一定级联删除 2)正向找 字段,反向找 字段related_name 3)db_constraint断开关联,on_delete不存在(不设置,本质在第三张设置

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

Entity Framework Fluent API

实际数据类型将因使用数据库提供程序而异。将属性设置行版本会自动将属性配置开放式并发标记。...").HasColumnType("ntext");//指定“Note”对应列名为“Notes”,并指定数据类型 8.HasForeignKey - ForeignKeyAttribute:将关系配置使用在对象模型属性...除非指定此关系,否则实体类型实例将无法保存到数据库数据库不可为null。...modelBuilder.Entity().HasRequired(order => order.customer);  11.Map:将关系配置使用未在对象模型公开属性。...可通过指定配置操作来自定义列和。如果指定了空配置操作,则约定将生成列名。如果在对象模型公开了属性,则使用 HasForeignKey 方法。并非所有关系都支持在对象模型公开外属性。

84210

Django学习-第七讲:django 常用字段、字段属性,关系、操作

字段常用属性 1. null 如果设置True,Django将会在映射表时候指定是否空。默认是False。...关系 在MySQL有两种引擎,一种是InnoDB,另外一种是myisam。如果使用是InnoDB引擎,是支持约束存在使得ORM框架在处理关系时候异常强大。...即只要这条数据引用了那条数据,那么就不能删除外那条数据。 3.SET_NULL设置空。如果那条数据被删除了,那么在本条数据上就将这个字段设置空。...如果设置这个选项,前提是要指定这个字段可以为空。 4.SET_DEFAULT:设置默认值。如果那条数据被删除了,那么本条数据上就将这个字段设置默认值。...如果设置这个选项,前提是要指定这个字段一个默认值。 5.SET():如果那条数据被删除了。那么将会获取SET函数值来作为这个值。

3.9K30

删除数据库未指定名称存储过程

数据库某个A,因为业务原因被移到别的库。麻烦是,有几张子表(B, C, D等)建有指向它,而且在创建时没有指定统一键名。...如此一来,在不同环境(开发、测试、生产等)名称不一样,必须逐个去查询键名再进行删除,十分不便。...Oracle存储过程代码如下: -- 删除指定、指定列上(系统命名或未知名) CREATE OR REPLACE PROCEDURE DROP_FK(P_TABLE IN VARCHAR2,...: -- 删除指定、指定列上(系统命名或未知名) CREATE OR REPLACE FUNCTION DROP_FK(P_TABLE IN VARCHAR, P_COLUMN IN VARCHAR...: DELIMITER // DROP PROCEDURE IF EXISTS drop_fk// -- 删除指定、指定列上(系统命名或未知名) CREATE PROCEDURE drop_fk

1.3K10

解决在laravelleftjoin带条件查询没有返回右NULL问题

问题描述:在使用laravel左联接查询时候遇到一个问题,查询带了右一个筛选条件,导致结果没有返回右记录。...leftJoin('class as c','c.user_id','=','u.user_id') - where('c.status','=',2) - get(); 解决方案: 1.在mysql角度上说...,直接加where条件是不行,会导致返回结果不返回class空记录,正确是写法应该是 select u.user_id,c.class from users u left join class c...and c.status=2; 没错,正确写法是left join .. on .. and 而非 left join .. on .. where 2.那么,在laravel里这个mysql表达式写法是怎样...以上这篇解决在laravelleftjoin带条件查询没有返回右NULL问题就是小编分享给大家全部内容了,希望能给大家一个参考。

6.8K31

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非空...以上仍然存在一个问题,当在员工输入不存部门时,数据依然可以添加,不符合实际,因此,这里就可以通过使用约束来解决。 【概念】什么是约束?...,就是从与主表主键对应那一列,如:员工dep_id,其中,主表是一方,用来约束别人,从可以是多方,被别人约束。 注意:可以为NULL,但是不能是不存在键值。 ?...id,同时希望自动改动员工id,这时就需要进行级联操作,需要在添加时候设置级联: 添加级联操作:ALTER TABLE 名称 ADD CONSTRAINT 键名称 FOREIGN KEY

13.6K21

Django创建、字段属性简介、脏数据概念、子序列化

SET_DEFAULT:假设A依赖B,B记录删除,A字段重置default属性设置值,所以必须配合default属性使用。...例子:部门没有了,部门员工里部门字段改为未分组部门id SET_NULL使用时候需要NULL=True;假设A依赖B,B记录删除,A字段重置NULL,所以必须配合NULL=True使用...例子:部门没有了,部门员工里部门字段改为未分组部门id字段NULL 注:多对多字段不能设置on_delete级联关系,如果要处理级联关系,需要手动明确关系,处理关系多个 3)db_constraint...=True) #断开出版社与book之间关联,取消两级联,将默认值设置空,反向查询字段名设置book authors = models.ManyToManyField...,将两张设置级联,并将反向查询字段名设置detail 数据库脏数据介绍 数据库中常见并发操作所带来了一致性问题包括:丢失修改,不可重复读,读“脏”数据,幻读。

4.3K30

基于EntityFramework 6 Code First实现多租户一种思路

该系统是针对某个客户企业,现要求该系统支持多个企业使用,但是又不能给每个企业部署一份(难以维护),只能想办法从代码层面去解决这个问题。 二、思路 在原有的数据增加,标记该数据属于哪个企业。...这代码改动会非常大,之前查询修改代码都需要增加筛选逻辑。这显然不合理。 动态分库。每个企业注册时,他生成一个独立数据库,企业登录时切换到他对应数据库。...这样就完全不用修改以前业务代码,只需要考虑企业数据库切换问题。 三、实现 那么EntityFramework Code First模式怎么实现动态分库功能呢?...企业登录时,读取主库,拿到业务数据库名称,然后保存到用户session(也可以是别的缓存),该用户后续请求都基于此数据库。 为了简单我建立了一个demo项目: ?...= null) { //设置当前业务数据库 CommonHelper.Instance.SetCurrentDBName

54330

Entity Framework DataAnnotations

下面列举实体模型中常用DataAnnotation特性: 1.KeyAttribute:对数据库中表主键设置 [Key] public int OrderID {...get; set; }  2.RequiredAttribute:对应数据库字段数据是否可以为null [Required] public string OrderName...,在EntityFramework程序集中定义了更多数据映射特性 7.DatabaseGeneratedAttribute:标记指定实体属性是由数据库生成,并指定生成策略(None数据库不生成值,Identity...Table("Order",Schema="Order")] public class Order  10.ForeignKeyAttribute:指定导航属性字段 public...对于单实体端,默认是可为空,即为0关系,如果要设置1关系,要使用 [Required]标签来进行标记。但对于一对一关系主体与依赖对象确无法做更细节控制。

83030

.NETORM框架设计(利用抽象、多态实现无反射绿色环保ORM框架)

目的之一:为了表达实体与对应关系 ORM是实体与一种映射关系,逐渐被发展一种复杂技术实现模型。 在传统分层架构,在实体定义上都会使用一个特性来标记该实体所表示名称是什么。...然后读取相关成员属性值,作为拼接SQL语句必备条件。 目的之二:为了表达属性与字段对应关系及一些主、 ORM中将实体属性映射成数据库中表字段,一般通过两种方式来表达这关系。...public abstract class BaseEntityObject : DictionaryBase { /// /// 实体对象对应数据库名...summary> private string _tablename = string.Empty; /// /// 受保护字典:实体类对应数据库主键属性和属性类型...string> _primarydictionary = new Dictionary(); /// /// 用于实体子类设置当前子类对应数据库

73620

.NetCoreEF Core迁移数据库统一添加前缀

在项目开发过程我们往往需要将项目数据库添加一个统一前缀。我们为什么要添加前缀呢?有的可能是公司规定,更多原因是项目和业务区分。 每个项目针对不同需求或业务场景,追加相应标识。...当项目到达一定规模后,数据库前缀意义便体现出来了,有利于在海量数据定位单张数据,在数据库拆分或者查问题时候比较方便一些。...逐个配置 在Entity Framework Core我们可以通过以下两种方式实现,逐个配置每个前缀方式实现 Fluent API modelBuilder.Entity()...当然有更优雅方式,我们可以在创建DbContext时进行一些额外配置即可实现。

98240

C# 数据操作系列 - 5. EF Core 入门

可以延迟加载需要数据,引用属性、查询结果等 丰富映射关系,支持一对一,一对多,多对多,甚至继承、单多实例等 可以使用Linq 进行查询 非Core版可以通过数据库生成实体类,两种都可以通过实体类生成...因为EF更多是基于.NET Framework开发,所以微软以EF基础针对.net core做了一定修改,然后EF Core诞生了。可以说EF Core是专门.net core开发。...这是EF Core保留迁移记录,以便下次使用。 如果项目根目录里没有 blogging.db 这个SQLite文件的话,会自动创建该文件,同时设置;如果有,但不是SQLite文件,则会报错。...使用工具连接到blogging.db数据库,可以看到 EF自动生成两个实体类对应DDL: CREATE TABLE "ModelBs" ( "Id" INTEGER NOT NULL CONSTRAINT...DefaultContext(); //添加 context.Add(new ModelA { Id = 10, Name = "测试" }); context.SaveChanges();//保存数据到数据库

2.4K10

MySQL学习之路:数据完整性-约束

数据完整性 数据完整性是指数据准确性和逻辑一致性,用来防止数据库存在不符合语义、无效数据或错误数据等。...PRIMARY KEY 又称为主键约束,定义构成主键一列或多列。 主键用于唯一标识每条记录,作为主键字段值不能为NULL且必须唯一,可以是单一字段,也可以是多个字段组合。...当向添加记录时,若字段赋值,数据库系统会自动将字段默认值插入。 属性名 数据类型 DEFAULT 默认值 修改购物车cart,将购买数量默认值设置1。...约束实现了引用完整性,当主表中被引用列值发生变化时,为了保证间数据一致性,从与该值相关信息也应该相应更新,这就是约束级联更新和删除。...SET NULL:更新和删除操作表记录时,从相关记录对应设置NULL。 NO ACTION:不进行任何操作 RESTRICT:拒绝主表更新或修改关联列。

19920

entity framework数据库映射(ORM)

三种开发模式 ORM框架对象关系映射 DataBase First (数据库优先,还没写代码) Model First (模型优先edmx文件,数据库创建) Code First (代码优先) Sql...Server安装:EntityFramework Mysql安装:MySql.Data.Entity 数据库优先 选择ADO.NET实体对象, 来自数据库EF设计器 导入数据库结构 模型优先 选择..."" providerName="System.Data.EntityClient" /> 空EF设计器 右键菜单,验证有无错误,连接数据库生成数据...后,配置文件App.config文件配置数据库连接 不同数据库,需要在nuget搜索不同ef,mysql和sqlserveref不同 ...,在已有数据库需要创建结构一致(这个操作和code first违背) 找不到provider 注意version版本号 <DbProviderFactories

84520

Django模型

这个东西,通常都是在业务逻辑层面来实现,而不是在数据库实现。但是通常大家学习数据库课程,都会有数据库设计范式,其中有个第三范式就是专指约束。在这里只是简单介绍一下。...:通过使用models.ForeignKey来设置,ForeignKey第一个参数是要关联模型类名,第二个参数是on_delete。...它常用值可以如下: CASCADE级联,删除主表数据时连通一起删除外数据 PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被应用数据 SET_NULL设置NULL...,仅在该字段null=True允许null时可用 SET_DEFAULT设置默认值,仅在该字段设置了默认值时可用 SET()设置特定值或者调用特定方法 DO_NOTHING不做任何操作,如果数据库前置指明级联性...,此选项会抛出IntegrityError异常 注意:我们在数据库设置时候需要制定另一张关联字段,但是在Django里并没有指定。

1.9K20

【愚公系列】2022年01月 Python教学课程 40-Django框架之模型属性详解

模型类如果指明名,Django默认以小写app应用名_小写模型类名为数据库名。...可通过db_table指明数据库名。 2) 关于主键 django会为创建自动增长主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长主键列。...,默认值是False null数据库范畴概念,blank是表单验证范畴 6) 设置时,需要通过on_delete选项指明主表删除数据时,对于引用数据如何处理,在django.db.models...包含了可选常量: CASCADE级联,删除主表数据时连通一起删除外数据 PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被应用数据 SET_NULL设置NULL...,仅在该字段null=True允许null时可用 SET_DEFAULT设置默认值,仅在该字段设置了默认值时可用 SET()设置特定值或者调用特定方法 DO_NOTHING不做任何操作,如果数据库前置指明级联性

1.4K20
领券