基于django 的orm中非主键自增的实现方式


Posted in Python onMay 18, 2020

我们知道django的orm想实现自增,可以直接使用AutoField字段既可以实现,但是这种情况必须要求此字段是主键,但是我们知道主键只能是一个。

如果我已经有了一个主键,但是又需要另外一个字段为唯一自增字段,这该如何实现呢?

本人的解决办法如下,供大家参考,也欢迎大家提供更多的实现方式,互相学习。

class ProductSpu(models.Model):
  """
  商品表
  """
  _database = 'payment'

  id = models.UUIDField(primary_key=True, default=uuid.uuid4, db_column='c_id')
  product_no = models.IntegerField('商品号', blank=True, auto_created=True, db_column='c_product_no')
  name = models.CharField(verbose_name='商品名称', max_length=100, db_column='c_name')

如上,product_no字段是我要实现的自增字段,

(1)首先设置此字段为IntegerField类型,并设置属性值auto_created=True;

(2)生成数据库的sql语句设置如下:

CREATE TABLE `ehr-payment`.`t_product_spu` (
 `c_id` char(32) NOT NULL,
 `c_product_no` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品编码',
 `c_name` varchar(100) NOT NULL COMMENT '商品名称',
 PRIMARY KEY (`c_id`),
 UNIQUE KEY `c_product_no` (`c_product_no`)
) ENGINE=InnoDB AUTO_INCREMENT=100001 DEFAULT CHARSET=utf8 COMMENT='商品表';

经过如上两点配合设置,新增一条数据是会自动填充自增字段product_no,其中通过sql配置 AUTO_INCREMENT=100001,实现自增字段开始的值。如,此例是从100001开始自增。

补充知识:django关于自增id的问题

在django中,如果创建模型。不指定id。django会自动自定一个id

class Student(models.Model):
  name = models.CharField(max_length=16)
  sex = models.CharField(max_length=4)

像这种情况。django会自动添加一个自增id

在数据库的表结构为

id name sex

相当于

class Student(models.Model):
  id = models.AutoField(primary_key=True)
  name = models.CharField(max_length=16)
  sex = models.CharField(max_length=4)

然后这id是自增的。

如果需要自定义id,然后这个id值是可用自己定义。那么就需要这样做即可

class Student(models.Model):
  u_id = models.IntegerField(primary_key=True)
  name = models.CharField(max_length=16)
  sex = models.CharField(max_length=4)

把AutoField 修改为IntegerField 即可

这样创建的数据。数据库的id值。就不是自增的。可用在插入sql的时候指定 u_id 的值为3,6,8等。

但是不能重复、

以上这篇基于django 的orm中非主键自增的实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python抓取淘宝下拉框关键词的方法
Jul 08 Python
浅谈Python 中整型对象的存储问题
May 16 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
对pandas中Series的map函数详解
Jul 25 Python
Selenium定位元素操作示例
Aug 10 Python
对python插入数据库和生成插入sql的示例讲解
Nov 14 Python
Python Pywavelet 小波阈值实例
Jan 09 Python
从0开始的Python学习016异常
Apr 08 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
使用tensorflow实现矩阵分解方式
Feb 07 Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
Mysql数据库反向生成Django里面的models指令方式
May 18 #Python
Jupyter notebook快速入门教程(推荐)
May 18 #Python
解决django 向mysql中写入中文字符出错的问题
May 18 #Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 #Python
python实现人像动漫化的示例代码
May 17 #Python
django日志默认打印request请求信息的方法示例
May 17 #Python
使用pyecharts1.7进行简单的可视化大全
May 17 #Python
You might like
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
python uuid模块使用实例
2015/04/08 Python
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
简单了解django orm中介模型
2019/07/30 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
简历中自我评价分享
2013/10/09 职场文书
中标通知书
2015/04/17 职场文书
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL