基於django 的orm中非主鍵自增的實現方式

2022-09-28 04:00:11 字數 1955 閱讀 8616

我們知道django的orm想實現自增,可以直接使用autofield欄位既可以實現,但是這種情況必須要求此字段是主鍵,但是我們知道主鍵只能是乙個。

如果我已經有了乙個主鍵,但是又需要另外乙個欄位為唯一自增字段,這該程式設計客棧如何實現呢?

本人的解決辦法如下,供大家參考,也歡迎大家提供更多的實現方式,互相學習。

class productspu(models.model):

"""商品表

"""_database = 'payment'

id = models.uu default=uu 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 ozlxdjov(`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)

*** = models.charfield(max_length=4)

像這種情況。django會自動新增乙個自增id

在資料庫的表結構為

id name ***

相當於class student(models.model):

id = models.autofield(primary_key=true)

name = models.charfield(max_length=16)

*** = 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)

*** = models.charfield(max_length=4)

把autofield 修改為integerfield 即可

這樣建立的資料。資料庫的id值。就不是自增的。可用在插入sql的時候指定 u_id 的值為3,6,8等。

但是不能重複、

本文標題: 基於django 的orm中非主鍵自增的實現方式

本文位址:

Django 中ORM 的使用

1 手動新建乙個資料庫 2 告訴django連線哪個資料庫 settings.py裡配置資料庫連線資訊 資料庫相關的配置項 databases 3 告訴django用pymsql 模組代替預設的mysqldb 去連線mysql 在和settings.py 同目錄下的 init py檔案中做配置 im...

使用Django的ORM詳細步驟

使用django的orm詳細步驟 1.自己動手建立資料庫 在cmd中輸入 create database 資料庫名 2.在django專案中設定連線資料庫的相關配置 告訴django連線哪乙個資料庫 資料庫相關的配置 3.告訴django用pymysql代替預設的mysqldb 連線mysql資料庫...

簡單示例實現django的orm

在django中如果我們定義了乙個user的model。就可以使用user.objects.create 等方法.那麼在django的原始碼中是如何實現這種寫法的呢?下面 從最外層簡單完成了django orm的呼叫方法實現.ps 下面的 只是實現了django的最外面呼叫實現而已.class ma...