91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于django的orm中如何實現非主鍵自增

發布時間:2020-07-23 16:32:46 來源:億速云 閱讀:516 作者:小豬 欄目:開發技術

這篇文章主要講解了基于django的orm中如何實現非主鍵自增,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

我們知道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中如何實現非主鍵自增有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁强县| 华安县| 永清县| 屯昌县| 广平县| 延寿县| 辽源市| 兰考县| 汤阴县| 霸州市| 沾益县| 永春县| 天水市| 苏尼特左旗| 仁怀市| 沁源县| 江都市| 凤阳县| 湄潭县| 宝鸡市| 托里县| 通渭县| 柞水县| 伽师县| 江达县| 临桂县| 十堰市| 三台县| 明溪县| 上杭县| 绥德县| 栾川县| 黄骅市| 茂名市| 芜湖市| 太保市| 冷水江市| 廊坊市| 类乌齐县| 平江县| 青河县|