【Django数据库】如何将一个表自定义的key列还原成id列作为key

【问题】makemigrations是会要求id输入默认值

例如下表UserVerifyCode,自定义了idUser这个key

修改成如下,去掉idUer的主键属性

使用python manage.py makemigrations,id是新增列,不能为空,所以必须输入默认值

解决办法

Step1:清空表的数据

Step2:上图上选择1方法,输入int(0)

Step3:

id列我们的都知道,实际上不需要默认值,这时候需要去makemigrations文件夹下,修改合并文件

文件目录

删除default=0, 代码

Step4 尝试migrate

报错有多个主键

Step5

分析makemigrations文件

发现是先添加id主键,再alter原来的主键idUser

Step6

尝试交换顺序重新migrate,出现如下提示,是makemigrations执行migrate时部分成功

前面表创建成功,但是主键更换失败,删除userlog表,重新migrate

Step7

drop userLog表之后再migrate

migrate成功

主键更新成功

时间: 2024-11-03 21:20:15

【Django数据库】如何将一个表自定义的key列还原成id列作为key的相关文章

Django 数据库ORM操作

CMDB实现数据展示功能部分代码. views.py def asset(request):     asset = Asset.objects.all()     return render_to_response("asset.html",{'asset': asset})      models.py class Asset(models.Model):     ipaddr = models.CharField(max_length=20, verbose_name=u'IP地

Python Django 数据库操作

1. 建立app 在自己的工程项目目录下输入: python manage.py startapp myapp(你想建立的app名称) 建立一个叫myapp的app 这样,在你的工程项目目录下会出现一个叫myapp的目录 2. 创建Model 在app目录下进入models.py 输入类似下面的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Publisher(models.Model):     name = models.CharField(

Django数据库

数据库 ORM框架 O是object,也就类对象的意思,R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思,M是mapping,是映射的意思.在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据.ORM框架还有一个功能,它可以根据我们设计的类自动帮我们生成数据库中的表格,省去了我们自己建表的过程. django中内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表的增删改查操作. 使用dj

django框架的模型类定义及操作

在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库. 使用MySQL数据库首先需要安装驱动程序 pip install PyMySQL 在Django的工程同名子目录的__init__.py文件中添加如下语句 from pymysql import install_as_MySQLdb install_as_MySQLdb() 作用是让Django的ORM能以mysqldb的方式来调用PyMySQL. 修改DATABASES配置信息 DATABA

django数据库操作和中间件

数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import models class userinfo(models.Model): name = models.CharField(max_length=30) email = models.EmailField() memo = models.TextField() 可用的字段: 1.models.Aut

Django数据库操作ORM

python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 python manage.py runserver 0.0.0.0 python manage.py startapp a

django数据库迁移sqlmigrate调试

django>=1.7数据库迁移只有三个命令 migrate,用来迁移数据库. 用法:migrate app makemigrations,用来检测数据库变更和生成数据库迁移文件. 用法:makemigratioins app sqlmigrate,用来把数据库迁移文件转换成数据库语言(displays the SQL statements for a migratioin.) 用法:sqlmigrate app migration,比如makemigrations生成了0001_initial

Django 数据库操作相关

当我们在Django项目中的models.py下写好创建表的代码后.为了创建好这些数据库表,我们再一次请出我的工程管理助手 manage.py.激活虚拟环境,切换到 manage.py 文件所在的目录下,分别运行 python manage.py makemigrations 和 python manage.py migrate 命令: F:\myblog>python manage.py makemigrations Migrations for 'blog': blog\migrations

Python学习----第七模块笔记(Web开发进阶之Django数据库操作)

4.Django ORM 4.1.连接数据库 创建Django工程后运行该工程,会在工程根目录下创建db.sqlite3文件,为Django自带的sqlite3数据库(Django自带的功能也需要数据库支持),如果没有在settings.py文件中进行配置的话,数据将会保存在该数据库中. Django使用MySQL: # 修改settings.py中DATABASES = {}的内容为 DATABASES = { 'default': { 'ENGINE': 'django.db.backend