如何制作一个自动增量整数字段Django

 糖糖菓子 发布于 2023-02-02 19:06

问题很简单,我正在订购购物车,我需要在订单生成时自动增加一个字段.但我不知道如何使整数字段自动递增:S任何帮助.

order.py

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)

Prashant Gau.. 67

在Django 1中:将有一个名为"id"的默认字段,它是自动增量.
2:您可以使用AutoField 字段将任何字段定义为自动增量 字段.

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
数据库设计
+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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)
如果要将django的默认id用作增量字段.
class Order(models.Model):
    dd_date = models.DateTimeField(auto_now_add=True)
数据库设计
+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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 |
+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+

我需要这个整数字段. (6认同)

还要注意,您不能有多个AutoField,并且Django默认将一个用于id字段,因此,如果您既需要记录id和一个自动递增的整数字段,则该字段不表示主字段。键(例如,在用于保留数据插入顺序的“直通”模型中)时,此解决方案不起作用。 (3认同)


Chitrank Dix.. 18

在每个模型的django中,您将获得默认的id字段,即自动增量.但是如果你手动想要使用自动增量仍然.您只需在模型中指定即可AutoField.

class Author(models.Model):
    author_id = models.AutoField(primary_key=True)

您可以在Django Documentation for AutoField中阅读有关django中auto字段的更多信息

4 个回答
  • 在每个模型的django中,您将获得默认的id字段,即自动增量.但是如果你手动想要使用自动增量仍然.您只需在模型中指定即可AutoField.

    class Author(models.Model):
        author_id = models.AutoField(primary_key=True)
    

    您可以在Django Documentation for AutoField中阅读有关django中auto字段的更多信息

    2023-02-02 19:07 回答
  • 在Django 1中:将有一个名为"id"的默认字段,它是自动增量.
    2:您可以使用AutoField 字段将任何字段定义为自动增量 字段.

    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
    

    数据库设计

    +------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | 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)
    

    如果要将django的默认id用作增量字段.

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

    数据库设计

    +-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | 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 |
    +-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
    

    2023-02-02 19:07 回答
  • 您可以创建一个自动字段。这是相同的文档

    请记住,Django在一个模型中不允许有多个AutoField,在您的模型中,您的主键已经有一个(默认)。因此,您将不得不重写模型的save方法,并且可能会从表中获取最后插入的记录,并相应地增加计数器并添加新记录。

    请确保该代码线程安全,因为在有多个请求的情况下,您可能最终尝试为不同的新记录插入相同的值。

    2023-02-02 19:07 回答
  • class Belly(models.Model):
        belly_id = models.AutoField(primary_key=True)
        belly_name = models.CharField(max_length=50)
    

    ********要么*******

    class Belly(models.Model):
       belly_name = models.CharField(max_length=50)
    

    不同之处是:

    第一个表具有主键belly_id(指定为AutoField),第二个表具有主键id(隐式).

    我认为不需要直接使用它; 如果未指定,主键字段将自动添加到模型中.否则,请检查有关AutoField的Django文档以获取更多相关信息AutoField.

    2023-02-02 19:07 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有