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. Centos7 yum 安装 oracle-rdbms-server-11gR2-pre

    Oracleyum官方网站 http://yum.oracle.com/ 一.下载yum源 根据自己需求下载相应的yum源 http://yum.oracle.com/getting-started. ...

  2. java架构《并发线程基础一》

    1.实现线程常见的两种的方式 : 1:继承extends Thread 2:实现new Runnable 实现其run方法 2.线程安全    结论: 当多个线程访问某一个类(对象或方法)时,这个对象 ...

  3. Spring boot 使用Redis 消息队列

    package com.loan.msg.config; import com.loan.msg.service.MessageReceiver; import org.springframework ...

  4. 小白搭建WNMP详细教程---PHP安装与设置

    php的安装请参考WAMP中PHP的安装教程https://www.cnblogs.com/missbye/p/12049925.html 需要注意的是,我们下载的PHP版本要下载Non Thread ...

  5. CPU中的程序是怎么运行起来的(预告篇)

    总述     最近一位朋友问我,我开发的代码是怎么运行起来的,我就开始给他介绍代码的预编译.汇编.编译.链接然后到一般的文件属性,再到代码运行.但是大佬问了我一句,CPU到底是怎么执行到每一个逻辑的, ...

  6. 使用TCP发送文件

    客户端 package com.zy.demo3; import java.io.File; import java.io.FileInputStream; import java.io.IOExce ...

  7. bfs输出路径 && 最短路(迪杰斯特拉)输出路径

    问题描述 解决方法 1.像第一个问题那就是最短路问题(我代码采用迪杰斯特拉算法)实现 2.换乘次数最少,那就用bfs广搜来寻找答案.但是我的代码不能保证这个最少换乘是最短路程 代码 1 #includ ...

  8. OpenStack-知识点补充

    登录计算节点查看进程 [root@compute ~]# ps aux | grep kvm root 824 0.0 0.0 0 0 ? S< 10:19 0:00 [kvm-irqfd-cl ...

  9. python sort() sorted()的区别

    sorted不保存 sort保存:

  10. Leetcode(337)-打家劫舍III

    小偷又发现一个新的可行窃的地点. 这个地区只有一个入口,称为"根". 除了根部之外,每栋房子有且只有一个父房子. 一番侦察之后,聪明的小偷意识到"这个地方的所有房屋形成了 ...