How do I make an auto increment integer field in Django?

后端 未结 8 1102
小鲜肉
小鲜肉 2020-12-02 19:37

I am making an Order model for a shopping cart and I need to make a field that auto increments when the order is made:

class Order(models.Model)         


        
8条回答
  •  青春惊慌失措
    2020-12-02 20:23

    In Django

    1 : we have default field with name "id" which is auto increment.
    2 : You can define a auto increment field using AutoField field.

    class Order(models.Model):
        auto_increment_id = models.AutoField(primary_key=True)
        #you use primary_key = True if you do not want to use default field "id" given by django to your model
    

    db design

    +------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table      | Create Table                                                                                                                                                  |
    +------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | 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 |
    +------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.01 sec)
    

    If you want to use django's default id as increment field .

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

    db design

    +-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table       | Create Table                                                                                                                                                    |
    +-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | core_order | CREATE TABLE `core_order` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `dd_date` datetime NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
    

提交回复
热议问题