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值手动设置数据表主键的更多相关文章

  1. 设置MySQL数据表主键

    设置MySQL数据表主键: 使用“primary key”关键字创建主键数据列.被设置为主键列不允许出现重复的值,很多情况下与“auto_increment”递增数字相结合.如下SQL语句所示: My ...

  2. SQLITE数据表主键设置Id自增方法

    SQLITE数据表主键设置Id自增方法 标签: sqliteintegerinsertnulltableapi 2010-01-12 08:39 35135人阅读 评论(8) 收藏 举报  分类: S ...

  3. mybatis insert、update 、delete默认返回值解释与如何设置返回表主键

    在使用mybatis做持久层时,insert.update.delete,sql语句默认是不返回被操作记录主键的,而是返回被操作记录条数: 那么如果想要得到被操作记录的主键,可以通过下面的配置方式获取 ...

  4. mysql手动设置数据表的自增值

    设置表tablename的自增值从1开始自增值 alter table tablename auto_increment=1;

  5. 数据库设计时,每个表要不要都设置自增主键ID!(转)

    逻辑数据库设计 - 需要ID(谈主键Id) 本文的目标就是要确认那些使用了主键,却混淆了主键的本质而造成的一种反模式. 一.确立主键规范 每个了解数据库设计的人都知道,主键对于一张表来说是一个很重要, ...

  6. EntityFramework实体默认值遇到Oracle自增主键

    1. Oracle实现主键自动增长 一般我们在Oracle实现主键自动增长,通常通过序列加触发器实现. 定义序列用于获取递增数字 CREATE SEQUENCE 序列名 [INCREMENT BY n ...

  7. django学习-25.admin管理后台里:把表名称和表字段名称的展示值都由英文显示改为由中文显示

    目录结构 1.前言 2.完整的操作步骤 2.1.第一步:修改模型类Article 2.2.第二步:重启服务 2.3.第三步:退出登录并再次成功登陆admin管理后台 2.4.第四步:查看最新的表名称展 ...

  8. matlab学习笔记4--导入和导出电子数据表

    一起来学matlab-matlab学习笔记4 数据导入和导出_3 导入和导出电子数据表 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用> ...

  9. jquery easyui datagrid 远程加载数据----把主键渲染为值遇到的问题及解决方案

    起因:数据库中一些字段存的是代表具体值的数字,需要渲染为具体值 monggodb中的字典 mysql中存放的值为:expertin代表教练擅长的搏击技能 jquery easyui中的相关代码如下:用 ...

随机推荐

  1. 在项目中如何自定义的Eslint配置

    一.设置js风格的缩进为4个空格 在你的前端项目中找到.eslintrc.js文件,如图 module.exports = { root: true, parserOptions: { parser: ...

  2. [一天一个进阶系列] - MyBatis基础篇

    前言:一直以来,很多人都是拿来主义,只停留在会使用的阶段,从未去研究挖掘其原理,剖析本质.现在慢慢探讨一下其内幕,抛砖引玉 一.简介 1)常用的持久化框架 Hibernate:是一款Java世界中最著 ...

  3. linux下的ARP攻击(kali)

    这是我的学习总结,刚入坑网络安全,写的不好或者有什么错误的希望大佬们指正 首先了解ARP的作用以及原理: ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP ...

  4. 编写高性能Java代码的最佳实践

    博客地址: http://blog.csdn.net/dev_csdn/article/details/79033972

  5. Java复习整理 day01

    练习代码: 1 //这条语句说明这个Java文件在demo的包下 2 package demo1; 3 /** 4 * 5 * @author 王兴平 6 * 这个是第一个hello world 案例 ...

  6. [HDU4734] 不要62(数位dp入门)

    >传送门< 题意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个. 思路:数位dp 就是数位上不能有4也不能有连续的62,没有4的话在枚举的时候判断一下,不枚举4就可以保证状态 ...

  7. hdu4501——小明系列故事——买年货(多维背包)

    题解: 思路:将v1,v2,k都当作一种体积,开三维dp数组,每种物品只能取一次 代码中的for循环是倒着进行的,知道01背包和完全背包的肯定明白,倒着进行的就代表每种物品只选择一次 代码: 1 #i ...

  8. hdu2430Beans(单调队列)

     Mr. Pote's shop sells beans now. He has N bags of beans in his warehouse, and he has numbered them ...

  9. codeforces251A. Points on Line

    Little Petya likes points a lot. Recently his mom has presented him n points lying on the line OX. N ...

  10. Power Strings POJ - 2406 后缀数组

    Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc&quo ...