基于django 的orm中非主鍵自增的實現(xiàn)方式
我們知道django的orm想實現(xiàn)自增,可以直接使用AutoField字段既可以實現(xiàn),但是這種情況必須要求此字段是主鍵,但是我們知道主鍵只能是一個。
如果我已經(jīng)有了一個主鍵,但是又需要另外一個字段為唯一自增字段,這該如何實現(xiàn)呢?
本人的解決辦法如下,供大家參考,也歡迎大家提供更多的實現(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(’商品號’, blank=True, auto_created=True, db_column=’c_product_no’) name = models.CharField(verbose_name=’商品名稱’, max_length=100, db_column=’c_name’)
如上,product_no字段是我要實現(xiàn)的自增字段,
(1)首先設(shè)置此字段為IntegerField類型,并設(shè)置屬性值auto_created=True;
(2)生成數(shù)據(jù)庫的sql語句設(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ù)是會自動填充自增字段product_no,其中通過sql配置 AUTO_INCREMENT=100001,實現(xiàn)自增字段開始的值。如,此例是從100001開始自增。
補(bǔ)充知識:django關(guān)于自增id的問題
在django中,如果創(chuàng)建模型。不指定id。django會自動自定一個id
class Student(models.Model): name = models.CharField(max_length=16) sex = models.CharField(max_length=4)
像這種情況。django會自動添加一個自增id
在數(shù)據(jù)庫的表結(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,然后這個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ù)庫的id值。就不是自增的。可用在插入sql的時候指定 u_id 的值為3,6,8等。
但是不能重復(fù)、
以上這篇基于django 的orm中非主鍵自增的實現(xiàn)方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. javascript xml xsl取值及數(shù)據(jù)修改第1/2頁2. Android實現(xiàn)圖片自動切換功能(實例代碼詳解)3. javascript設(shè)計模式 ? 建造者模式原理與應(yīng)用實例分析4. jsp+mysql實現(xiàn)網(wǎng)頁的分頁查詢5. ASP.NET MVC通過勾選checkbox更改select的內(nèi)容6. 存儲于xml中需要的HTML轉(zhuǎn)義代碼7. 使用AJAX(包含正則表達(dá)式)驗證用戶登錄的步驟8. Python使用oslo.vmware管理ESXI虛擬機(jī)的示例參考9. JavaScript Tab菜單實現(xiàn)過程解析10. ThinkPHP5 通過ajax插入圖片并實時顯示(完整代碼)
