基于django的orm中如何实现非主键自增

  介绍

这篇文章主要讲解了基于django的orm中如何实现非主键自增,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

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

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

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

类ProductSpu (models.Model):
  “““
  商品表
  “““
  _database=& # 39;支付# 39;
  
  id=模型。UUIDField (primary_key=True,默认=uuid。uuid4 db_column=& # 39; c_id& # 39;)
  product_no=models.IntegerField(& # 39;商品号& # 39;,空白=True, auto_created=True, db_column=& # 39; c_product_no& # 39;)
  name=models.CharField (verbose_name=& # 39;商品名称& # 39;,max_length=100, db_column=& # 39; c_name& # 39;) 

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

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

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

类学生(models.Model):
  name=models.CharField (max_length=16)
  性别=models.CharField (max_length=4) 

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

在数据库的表结构为

id名称性

相当于

类学生(models.Model):
  id=models.AutoField (primary_key=True)
  name=models.CharField (max_length=16)
  性别=models.CharField (max_length=4) 

然后这id是自增的。

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

类学生(models.Model):
  u_id=models.IntegerField (primary_key=True)
  name=models.CharField (max_length=16)
  性别=models.CharField (max_length=4) 

把AutoField修改为IntegerField即可

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

但是不能重复,

看完上述内容,是不是对基于django的orm中如何实现非主键自增有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。

基于django的orm中如何实现非主键自增