django学习-13.通过pk值手动设置数据表主键
1.前言
通过django框架的Model层来新增数据库表时,如果在需要新增的表字段里任何一个表字段都没设置主键,框架会默认新增一个表字段id并把该表字段id设置为主键。
那么,如果我们想自己动手设置其中一个新增的表字段A为主键,需要在这表字段A所对应调用的方法里加个参数primary_key且参数primary_key值必须等于True。
细节:
①.参数primary_key,一般简称为pk,俗称主键。
2.默认id主键的实现流程
2.1.首先,在项目绝对路径【helloworld/hello/models.py】里新增一个类【User】,并新增相关类属性。
# 新增一张用户表,表名为user,有三个表字段:user_name,user_psw,user_email,三个表字段数据类型都是字符串类型。
class User(models.Model):
user_name = models.CharField(max_length=30)
user_psw = models.CharField(max_length=30)
user_email = models.CharField(max_length=30)
2.2.接着,在项目绝对路径【helloworld/】下,执行命令行【python manage.py makemigrations】。
细节:
①.在项目【helloworld】的根目录【helloworld/】下,命令行【python manage.py makemigrations】执行才能生效,因为manage.py只存在根目录下;
②.命令行【python manage.py makemigrations】里的【makemigrations】其实就是传给manage.py当其中一个入参的入参值,这是命令行的专用写法;相关知识点如下面的截图所示:
2.3.接着,在项目绝对路径【helloworld/】下,执行命令行【python manage.py migrate】。
3.通过pk值人为设置数据表主键
3.1.首先,在项目绝对路径【helloworld/hello/models.py】里新增一个类【Role】,并新增相关类属性。
# 新增一张角色表,表名为hello_role,有三个表字段:role_name,role_level,role_intro,三个表字段数据类型都是字符串类型。
class Role(models.Model):
role_name = models.CharField(max_length=30, primary_key=True) # 角色名;这个表字段role_name设置为主键,让角色名是不重复的;
role_level = models.CharField(max_length=30) # 角色等级
role_intro = models.CharField(max_length=30) # 角色简介
细节:
①.主键的作用:确保数据表里每条数据里的每个主键的值是唯一的;
3.2.接着,在项目绝对路径【helloworld/】下,执行命令行【python manage.py makemigrations】。
3.3.接着,在项目绝对路径【helloworld/】下,执行命令行【python manage.py migrate】。
django学习-13.通过pk值手动设置数据表主键的更多相关文章
- 设置MySQL数据表主键
设置MySQL数据表主键: 使用“primary key”关键字创建主键数据列.被设置为主键列不允许出现重复的值,很多情况下与“auto_increment”递增数字相结合.如下SQL语句所示: My ...
- SQLITE数据表主键设置Id自增方法
SQLITE数据表主键设置Id自增方法 标签: sqliteintegerinsertnulltableapi 2010-01-12 08:39 35135人阅读 评论(8) 收藏 举报 分类: S ...
- mybatis insert、update 、delete默认返回值解释与如何设置返回表主键
在使用mybatis做持久层时,insert.update.delete,sql语句默认是不返回被操作记录主键的,而是返回被操作记录条数: 那么如果想要得到被操作记录的主键,可以通过下面的配置方式获取 ...
- mysql手动设置数据表的自增值
设置表tablename的自增值从1开始自增值 alter table tablename auto_increment=1;
- 数据库设计时,每个表要不要都设置自增主键ID!(转)
逻辑数据库设计 - 需要ID(谈主键Id) 本文的目标就是要确认那些使用了主键,却混淆了主键的本质而造成的一种反模式. 一.确立主键规范 每个了解数据库设计的人都知道,主键对于一张表来说是一个很重要, ...
- EntityFramework实体默认值遇到Oracle自增主键
1. Oracle实现主键自动增长 一般我们在Oracle实现主键自动增长,通常通过序列加触发器实现. 定义序列用于获取递增数字 CREATE SEQUENCE 序列名 [INCREMENT BY n ...
- django学习-25.admin管理后台里:把表名称和表字段名称的展示值都由英文显示改为由中文显示
目录结构 1.前言 2.完整的操作步骤 2.1.第一步:修改模型类Article 2.2.第二步:重启服务 2.3.第三步:退出登录并再次成功登陆admin管理后台 2.4.第四步:查看最新的表名称展 ...
- matlab学习笔记4--导入和导出电子数据表
一起来学matlab-matlab学习笔记4 数据导入和导出_3 导入和导出电子数据表 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用> ...
- jquery easyui datagrid 远程加载数据----把主键渲染为值遇到的问题及解决方案
起因:数据库中一些字段存的是代表具体值的数字,需要渲染为具体值 monggodb中的字典 mysql中存放的值为:expertin代表教练擅长的搏击技能 jquery easyui中的相关代码如下:用 ...
随机推荐
- 十一:SpringBoot-事务管理
SpringBoot-事务管理 1.事务管理简介 1.1 特性:ACID 1.2 隔离问题 1.3 隔离级别 2.Spring事务管理 2.1 顶级接口 2.2 事务状态 2.3 事务定义 1.事务管 ...
- jQuery——通过Ajax发送数据
Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML),一个Ajax解决方案涉及如下技术: JavaScript:处理与用户及其他浏览器相关事件的 ...
- (转)pip和easy_install使用方式
easy_install 跟 pip 都是 Python 的套件管理程式,有了它們,在使用 Python 開發程式的時候會帶來不少方便. easy_install 和 pip 有什麼不一樣?據 pip ...
- JavaScript解构赋值
JavaScript解构赋值 JavaScript解构赋值为我们提供了很多方便,但是用法比较多,本文就来梳理一下.总体来说,主要就两种地方使用解构赋值,一种是数组的解构赋值,另一种是对象的解构赋值.以 ...
- PIE模型
首先,我们需要明确程序的Bug有如下的定义: 1. Fault/Defect 静态的,存在于软件中的缺陷.例如:一段有缺失或者错误的代码. 2. Error 运行时一种不正确的中间状态. 3. Fai ...
- 国产App为什么如此“臃肿”?!
引言 App是Application的简称,正是因为有了丰富多彩的各类App,人们就可以通过它们来最大限度地发挥手中设备的功能.本文主要讨论手机上的App,因为手机的硬件和软件与十余年前相比早已有了巨 ...
- OsgEarth开发笔记(三):Osg3.6.3+OsgEarth3.1+vs2019x64开发环境搭建(下)
前言 上一篇编译了proj6.2.0.gdal3.2.1,本篇继续. OsgEarth编译过程简介 OsgEarth的编译,是基于Osg和OsgEarth结合在一起的,先要编译Osg,然后 ...
- D - Wireless Network(无线网络)
题意:给你 N 台坏了的电脑的坐标 ,和一个距离范围 d . (在距离范围内的电脑可以相互通信,每台电脑也可以连接两台不同的电脑,使他们之间能够通信) 输入任意次数操作: O x 表 ...
- AcWing 241 楼兰图腾 (树状数组)
在完成了分配任务之后,西部314来到了楼兰古城的西部. 相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀('V'),一个部落崇拜铁锹('∧'),他们分别用V和∧的形状来代表各自 ...
- HDU - 3374 String Problem (kmp求循环节+最大最小表示法)
做一个高产的菜鸡 传送门:HDU - 3374 题意:多组输入,给你一个字符串,求它最小和最大表示法出现的位置和次数. 题解:刚刚学会最大最小表示法,amazing.. 次数就是最小循环节循环的次数. ...