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

从遗留的mysql数据库自动生成Django模型:我必须更改models.DO_NOTHING中的on_delete参数的值吗

在Django中,当你使用ForeignKeyOneToOneField字段时,你需要指定on_delete参数来处理关联对象被删除时的行为。on_delete参数决定了当关联对象被删除时,当前对象应该如何处理。

对于遗留的MySQL数据库自动生成Django模型,如果你需要更改models.DO_NOTHING中的on_delete参数的值,你可以根据具体情况选择适当的行为。下面是一些常用的选项:

  1. CASCADE:级联删除,当关联对象被删除时,当前对象也会被删除。
  2. PROTECT:保护模式,当关联对象被删除时,会抛出ProtectedError异常,阻止当前对象被删除。
  3. SET_NULL:设置为NULL,当关联对象被删除时,当前对象的外键字段会被设置为NULL。
  4. SET_DEFAULT:设置为默认值,当关联对象被删除时,当前对象的外键字段会被设置为默认值。
  5. SET():设置为指定值,当关联对象被删除时,当前对象的外键字段会被设置为指定的值。
  6. DO_NOTHING:不采取任何行动,当关联对象被删除时,当前对象的外键字段保持不变。

根据你的具体需求,选择适合的on_delete参数值来处理关联对象被删除时的行为。

腾讯云提供了云数据库 MySQL 服务,可以满足你的数据库需求。你可以通过以下链接了解更多关于腾讯云云数据库 MySQL 的信息和产品介绍:

腾讯云云数据库 MySQL

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

相关·内容

Django——模型Model

ORM简介 对象关系映射(Object Relation Mapping)实现了关系和数据库之间映射,隐藏了关系数据访问细节,不需要再编写SQL语句 创建模型 在models.py文件创建类 继承...=20)), ('pub_date', models.DateField()), ], ), ] 2执行迁移:根据第一步生成迁移文件在数据库创建表...OK Django默认采用sqlite3数据库,最终会生成如下数据表,其中自定义表命名规则是(应用名称模型类名) DATABASES = { 'default...=models.DO_NOTHING) django 升级到2.0之后,表与表之间关联时候,必须要写on_delete参数,否则会报异常: TypeError: init() missing 1 required...positional argument: 'on_delete' on_delete参数各个含义: on_delete=None, # 删除关联表数据时,当前表与其关联

69950

DjangoAutoField字段使用

Django是一个机智框架】 默认情况下Djang会为ORM定义每一张表加上一个自增ID列,并且用这个列来做主键;出于一个MySQL-DBA工作经历觉得 Djanog还真是机智;这样么说主要是因为遇到过许多主从延时问题...如果当前网站用Django开发想就不会有这种事情发生了吧。...补充知识:Djangomodels下常用Field以及字段参数 一、常见FieldType数据库字段类型 1、AutoField:自增Field域,自动增加一个数据库字段类型,例如id字段就可以使用该数据类型...,参数必须填入primary_key=True 2、BigAutoField:和AutoField相同,只是比AutoField要大,参数必须填入primary_key=True 3、BigIntegerField...表名_set” 4、on_delete:当删除关联表数据时,当前表与其关联行为,例如删除一个出版社,那么和这个出版社有关联书籍也都被删除掉了,下面介绍on_delete参数值: on_delete

6.4K20

博客将 Django 1.11+ 升级到 Django 2.2+ 遇到问题及规避方法

但是,秉着向新技术看齐态度,还是花了些时间(大概半天)把博客依赖 Django 升级到当前最新版 Django 2.2.6 版本了,在升级过程也遇到了很多问题,这些问题也是之前考虑到,所以基本都迎刃而解了...' 报错原因其实一看就能知道,这个地方是说关于一些模型在一对一关联和一对多关联(外键)时候需要指定 on_delete 参数才行,多对多没有这个设置。...因为在 Django 1.x 版本,这个参数是有默认,但是 Django 2.x 没有指定,所以需要显示设定一个。...规避方法 把项目中所有模型中有外键字段都添加这个属性,添加时候需要根据实际情况设定。...migrate 报错 由于 django 2.2+ auth 应用数据库迁移文件比 1.11+ 版本多了几个,所以按理需要把这几个迁移文件添加到数据库,但是由于我添加了 oauth 应用,这个应用必须依赖

91320

使用Django实现把两个模型数据聚合在一起

Django想要把模型类聚合得到想要数据可以用F对象。 比如有模型类A和B,A和B之间有外键关联在一起,A是子表,B是父表(反过来没试过。。...看到网上有说F对象可以这样用F(‘b__id’) == F(‘模型类名小写__字段名’),此处是双下划线。 但是Django2.0时会报错。。真是搞不懂,后来直接使用字段名居然可以,醉了。...,第一个元素表示存在数据库内真实,第二个表示页面上显示具体内容 SEX_CHOICE = ( ('男', '男'), ('女', '女'), ) sex = models.CharField...,第一个元素表示存在数据库内真实,第二个表示页面上显示具体内容 SEX_CHOICE = ( ('男', '男'), ('女', '女'), ) sex = models.CharField...为子表(有外键所在表) class ScoreInline(admin.TabularInline): # Score 必须是models.py模型名称,大小写必须要匹配.这个模型为子表,以便可以被父表编辑

1.4K20

django admin配置搜索域是一个外键时处理方法

这个是网上查到解决方案,测试可用,如下: models.py 文件 # coding:utf8 from django.db import models class Book(models.Model...,双下划线 list_display = ('book', 'category') # 在页面上显示字段,若不设置则显示 models.py __unicode__(self) 中所返回...在Django定义了如下A,B两个模型: class A: name=models.CharField(max_length=15) def __unicode__(self):...,部署到云服务器上后,就在后台管理系统中看到B属性一栏f显示为A_Object,并没有显示A属性——name。...=models.DO_NOTHING) def __str__(self): return self.name 以上这篇在django admin配置搜索域是一个外键时处理方法就是小编分享给大家全部内容了

3.8K20

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

Django 关系字段 本文主要内容是关于Django框架models知识小结 #1 环境 Python3.7.3 Django==2.0.7 #2 字段 #2.1 一对多(ForeignKey)...一对多 : fk字段在"多"models定义 from django.db import models class Blog(models.Model): name = models.CharField...(to='self', on_delete=models.CASCADE) #2.3 关联关系 on_delete=None, # 删除关联表数据时,当前表与其关联field...行为 on_delete=models.CASCADE, # 删除关联数据,与之关联也删除 on_delete=models.DO_NOTHING, # 删除关联数据,什么也不做 on_delete...与之关联设置为可执行对象返回,设置:models.SET(可执行对象) #2.4 数据库表示 在生成数据库时,Django追加"_id"字段名称来创建其数据库列名,可以通过指定显式更改此内容db_column

75420

几乎不写一行代码,快速开发后台功能

2.架构设计 为实现商城系统后台,采用Django框架作为服务器端基础框架,采用“HTML + CSS + JavaScript”搭建前端,数据库采用MySQL,如下图所示。...物理模型设计:针对逻辑模型分析内容,在具体物理介质上实现出来。比如,在MySQL数据库编写SQL脚本建立用户信息表。 逻辑模型到物理模型,是一个抽象到具体、不断细化完善过程。...一般使用PowerDesign或者PDMan进行数据库模型设计。 (1)生成物理模型 在PDMan可以新增模型,设计商品分类表和商品表,如下图所示。商品分类表和商品表是“一对多”关系。...在模型设计完成后,可以导出DDL脚本,然后在指定数据库生成数据表。 (2)反向生成Django模型 在完成数据库物理模型设计后,可以根据物理模型反向生成Django模型。...只要定义好模型Django就能生成一个具备增加、删除、修改和查询功能应用。这也是Django之所以非常流行一个很大原因。

81520

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

django入门到精通No.2----模型 一、前言 学过orm系统自然之道模型重要性,很多web站点都需要与数据库交互,这个时候模型设计就显得尤为重要,一个好模型会使得项目方便管理并且易于维护...二、模型定义 模型可以定义储存数据字段和,比如我们在进行表单提交时候,一些注册信息就可以利用模型来进行管理,然后统一提交到数据库。简单来说,模型是与数据库有关操作集合。...必填参数primary_key=True,则成为数据库主键,无该字段时,django自动创建,一个model不能有两个该字段。...,你可以指定一个中介模型来定义多对多关系,可以将其它字段放在中介模型,源模型字段使用through参数指向中介模型。...六、总结 以上就是django所有的关于模型概念了,接下来小编将通过与数据库交互来带着大家一起操作表。

2.1K00

Django 学习笔记之模型(上)

顺便补充下本文用一些工具版本:Python 版本是 3.6,Mysql 版本是 5.5 1 模型是什么 在 Web 应用,数据一般存储到数据库Django 模型层是跟数据库打交道层次。...另外,我们只需要关心每个类属性以及长度限制,不用关心怎么创建数据库表。Django 可以自动生成这些 CREATE TABLE 语句。...你可以通过显式地指定 db_column 来改变该字段列名称,不过,除非你想自定 义 SQL ,否则没必要更改数据库列名称。 它第一个参数必须传入该模型关联类。...on_delete 现在可以用作第二个位置参数(之前它通常只是作为一个关键字参数传递). 在Django 2.0,这将是一个必传参数。...3.4 字段选项 有些字段会有些特殊参数,但所有字段类型都又些通用可选选项。先是常用可选选项。 1)null :如果该参数设置为 True,Django将会把数据库保存为 NULL。

1.7K30

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

0904自我总结 django模型中有外键关系表删除相关设置 一.一对一 例如有Author、AuthorDetail两表 author = models.OneToOneField(to='Author...=models.DO_NOTHING, ) 1)关系字段放在Book表(多一方):出版社删除书外键不动,书删除没有任何影响 2)出版社找书用 外键related_name...1)断关联,删除关联表记录,外键值置空 db_constraint=False, on_delete=models.SET_NULL, null=True, 2)断关联,删除关联表记录,外键值置默认...db_constraint=False, on_delete=models.SET_DEFAULT, default=1, 注意:on_delete必须声明models.DO_NOTHING为删除级联关系..., models.CASCAD为级联关系,'SET_NULL'置空,SET_DEFAULT设为默认 两者区别 models.SET关联表内容删了,关联相关内容不会删除 models.CASCAD关联表内容删了

3K20

DjangoORM介绍和字段及其参数

DjangoORM Django项目使用MySQL数据库 1....模型每个属性都代表一个数据库字段。 综上所述,Django为您提供了一个自动生成数据库访问API,详询官方文档链接。 ?...Django支持MySQL5.5及更高版本。  DjangoORM常用字段和参数 常用字段 AutoField:int自增型,必须填入参数 primary_key = True 。...bigint自增列,必须填入参数 primary_key=True 注:当model如果没有自增列,则自动会创建一个列名为id列 from django.db import...Django有一套默认按照一定规则生成数据模型对应数据库表名,如果你想使用自定义表名,就通过这个属性指定,比如: table_name='my_owner_table' 若不提供该参数, Django

2.8K80

Python Django开发 异常及其解决办法(一)

配置MySQL数据库django.db.utils.OperationalError 5.Django makemigrations报错Field specifies on_delete=SET_NULL...to apply 造成多次应用migrations失败原因是,当前model是修改过,原来migrations已经被删除,但是,重新生成migrations使用递增整数记名,所以,在django_migrations...4.Django配置MySQL数据库django.db.utils.OperationalError Django默认配置数据库为sqlite,为稳健性数据库,一般需要改为MySQL数据库,settings.py...这可能是因为所定义某个模型定义了外键,而在新版Django中外键必须指定on_delete属性,例如user = models.ForeignKey(User, verbose_name='用户',...on_delete=models.SET_NULL)此时是因为该属性指定为models.SET_NULL,即在父模型删除数据后,对应模型记录字段设为空,但是在定义该字段时并未允许该字段为空,因此解决方法有两种

3K20

Django学习笔记之ORM字段和字段参数

简单说,ORM是通过使用描述对象和数据库之间映射元数据,将程序对象自动持久化到关系数据库。 ORM在业务逻辑层和数据库层之间充当了桥梁作用。 2. ORM由来 让我们O/R开始。...但是在整个软件开发过程需要特殊处理情况应该都是很少,否则所谓工具也就失去了它存在意义。 二、DjangoORM 1. Django项目使用MySQL数据库 1....通常,一个模型(model)映射到一个数据库表, 基本情况: 每个模型都是一个Python类,它是django.db.models.Model子类。 模型每个属性都代表一个数据库字段。...综上所述,Django为您提供了一个自动生成数据库访问API,详询官方文档链接。 ? 3....- bigint自增列,必须填入参数 primary_key=True 注:当model如果没有自增列,则自动会创建一个列名为id列 from django.db

5.1K10

Django之Model操作数据库详解

Django ORM框架功能: 建立模型类和表之间对应关系,允许我们通过面向对象方式来操作数据库。 根据设计模型生成数据库表格。 通过方便配置就可以进行数据库切换。...二、 数据库配置 Django可以配置使用sqlite3,mysql,oracle,postgresql等数据库。...'PORT':'3306', #数据库使用端口 } } 配置好数据库信息后还必须安装数据库驱动程序,Django默认导入mysql驱动程序是MySQLdb,然而MySQLdb...表达式可以是简单、对模型(或任何关联模型)上字段引用或者聚合表达式(平均值、总和等)。    ...关键字参数指定Annotation将使用关键字作为Annotation 别名。 匿名参数别名将基于聚合函数名称和模型字段生成。 只有引用单个字段聚合表达式才可以使用匿名参数

7K10
领券