1. ホーム
  2. python

Django で自動インクリメントの整数型フィールドを作るには?

2023-09-17 07:49:24

質問

私は Order モデルを作成していますが、注文が行われたときに自動的に増加するフィールドを作成する必要があります。

class Order(models.Model):
    cart = models.ForeignKey(Cart)
    add_date = models.DateTimeField(auto_now_add=True)
    order_number = models.IntegerField()
    enable = models.BooleanField(default=True)

どのようにすれば IntegerField を自動インクリメントするには?

どのように解決するのですか?

Djangoでは

1 : Django のモデルクラスは、デフォルトのフィールドとして、名前 id という名前のフィールドがあり、これは自動インクリメントのフィールドです。

2 : 自動インクリメントのフィールドは AutoField フィールドを作成します。

class Order(models.Model):
    auto_increment_id = models.AutoField(primary_key=True)
    # primary_key = True は、 django がモデルに与えるデフォルトのフィールド "id" を使いたくない場合です。

db デザイン

+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| テーブル|テーブルの作成
+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| core_order | CREATE TABLE `core_order` (
  auto_increment_id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`auto_increment_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | Developers.IO
+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
セットで1行 (0.01秒)

django のデフォルト ID をインクリメントフィールドとして使いたい場合 .

class Order(models.Model):
    add_date = models.DateTimeField(auto_now_add=True)

dbデザイン

+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| テーブル|テーブルの作成
+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| core_order | CREATE TABLE `core_order` (
  id` int(11) NOT NULL AUTO_INCREMENT,
  add_date` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | Developers.IO
+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+