基于django 的orm中非主鍵自增的實(shí)現(xiàn)方式
我們知道django的orm想實(shí)現(xiàn)自增,可以直接使用AutoField字段既可以實(shí)現(xiàn),但是這種情況必須要求此字段是主鍵,但是我們知道主鍵只能是一個(gè)。
如果我已經(jīng)有了一個(gè)主鍵,但是又需要另外一個(gè)字段為唯一自增字段,這該如何實(shí)現(xiàn)呢?
本人的解決辦法如下,供大家參考,也歡迎大家提供更多的實(shí)現(xiàn)方式,互相學(xué)習(xí)。
class ProductSpu(models.Model): """ 商品表 """ _database = 'payment' id = models.UUIDField(primary_key=True, default=uuid.uuid4, db_column='c_id') product_no = models.IntegerField('商品號(hào)', blank=True, auto_created=True, db_column='c_product_no') name = models.CharField(verbose_name='商品名稱', max_length=100, db_column='c_name')
如上,product_no字段是我要實(shí)現(xiàn)的自增字段,
(1)首先設(shè)置此字段為IntegerField類型,并設(shè)置屬性值auto_created=True;
(2)生成數(shù)據(jù)庫(kù)的sql語(yǔ)句設(shè)置如下:
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='商品表';
經(jīng)過如上兩點(diǎn)配合設(shè)置,新增一條數(shù)據(jù)是會(huì)自動(dòng)填充自增字段product_no,其中通過sql配置 AUTO_INCREMENT=100001,實(shí)現(xiàn)自增字段開始的值。如,此例是從100001開始自增。
補(bǔ)充知識(shí):django關(guān)于自增id的問題
在django中,如果創(chuàng)建模型。不指定id。django會(huì)自動(dòng)自定一個(gè)id
class Student(models.Model): name = models.CharField(max_length=16) sex = models.CharField(max_length=4)
像這種情況。django會(huì)自動(dòng)添加一個(gè)自增id
在數(shù)據(jù)庫(kù)的表結(jié)構(gòu)為
id name sex
相當(dāng)于
class Student(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=16) sex = models.CharField(max_length=4)
然后這id是自增的。
如果需要自定義id,然后這個(gè)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 即可
這樣創(chuàng)建的數(shù)據(jù)。數(shù)據(jù)庫(kù)的id值。就不是自增的??捎迷诓迦雜ql的時(shí)候指定 u_id 的值為3,6,8等。
但是不能重復(fù)、
以上這篇基于django 的orm中非主鍵自增的實(shí)現(xiàn)方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python Numpy 實(shí)現(xiàn)交換兩行和兩列的方法
今天小編就為大家分享一篇Python Numpy 實(shí)現(xiàn)交換兩行和兩列的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-06-06Python+Matplotlib+LaTeX玩轉(zhuǎn)數(shù)學(xué)公式
這篇文章主要為大家介紹了如何在Matplotlib中使用LaTeX?公式和符號(hào)以及Python如何生成LaTeX數(shù)學(xué)公式。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-02-02Python實(shí)現(xiàn)PS濾鏡的旋轉(zhuǎn)模糊功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)PS濾鏡的旋轉(zhuǎn)模糊功能,涉及Python基于skimage庫(kù)針對(duì)圖片進(jìn)行旋轉(zhuǎn)與模糊化處理的相關(guān)操作技巧,需要的朋友可以參考下2018-01-01Python列表創(chuàng)建與銷毀及緩存池機(jī)制
這篇文章主要介紹了Python列表創(chuàng)建與銷毀及緩存池機(jī)制,文章基于python展開對(duì)列表創(chuàng)建與銷毀內(nèi)容的展開,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05如何將你的應(yīng)用遷移到Python3的三個(gè)步驟
這篇文章主要介紹了如何將你的應(yīng)用遷移到Python3的三個(gè)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12對(duì)python自動(dòng)生成接口測(cè)試的示例講解
今天小編就為大家分享一篇對(duì)python自動(dòng)生成接口測(cè)試的示例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-11-11Python何時(shí)應(yīng)該使用Lambda函數(shù)
這篇文章主要介紹了Python何時(shí)應(yīng)該使用Lambda函數(shù),Python 中定義函數(shù)有兩種方法,一種是用常規(guī)方式 def 定義,函數(shù)要指定名字,第二種是用 lambda 定義,不需要指定名字,稱為 Lambda 函數(shù),需要的朋友可以參考下2019-07-07win10安裝tensorflow-gpu1.8.0詳細(xì)完整步驟
這篇文章主要介紹了win10安裝tensorflow-gpu1.8.0詳細(xì)完整步驟,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01