基于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 相关文章推荐
把项目从Python2.x移植到Python3.x的经验总结
Apr 20 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
May 17 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
Dec 15 Python
python3学习之Splash的安装与实例教程
Jul 09 Python
python读取有密码的zip压缩文件实例
Feb 08 Python
python+pyqt5编写md5生成器
Mar 18 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
Jun 12 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
Python单链表原理与实现方法详解
Feb 22 Python
浅谈Python3中print函数的换行
Aug 05 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 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获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
mac下Apache + MySql + PHP搭建网站开发环境
2014/06/02 PHP
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
JQuery 常用方法基础教程
2009/02/06 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
2017/03/21 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
Python中pygal绘制雷达图代码分享
2017/12/07 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
Python3 读、写Excel文件的操作方法
2018/10/20 Python
python requests指定出口ip的例子
2019/07/25 Python
Python 实现自动导入缺失的库
2019/10/29 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
两道JAVA笔试题
2016/09/14 面试题
化学教师教学反思
2014/01/17 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
五一劳动节活动记录
2014/03/23 职场文书
社区班子对照检查材料
2014/08/27 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书