我们知道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='商品表';