使用字符串 django 自动增加 id 值

Posted

技术标签:

【中文标题】使用字符串 django 自动增加 id 值【英文标题】:Auto incrementing id value with string django 【发布时间】:2015-07-18 01:29:26 【问题描述】:

我正在尝试创建一个包含 case_id 字段的模型。该字段应该是自动递增的。但是我的 case_id 值应该是显示的格式,

case_id=FAS150001(这应该是第一个值)

class InformationRequest(models.Model):

    """Model to track information"""

    case_id = models.CharField(max_length=50)
    user = models.ForeignKey(User)
    information = models.TextField()

我该怎么做?

【问题讨论】:

【参考方案1】:

字符域不能自动递增。

但是Django signals 可以帮助您模拟这种行为。你可以做一个预保存或保存后的信号来制作它,例如:

from django.db.models.signals import pre_save
from django.dispatch import receiver
from myapp.models import InformationRequest


@receiver(pre_save, sender=InformationRequest)
def my_handler(sender, instance=None, **kwargs):
    # Compute case_id, ex:
    # instance.case_id = increment_case_id()

【讨论】:

以上是关于使用字符串 django 自动增加 id 值的主要内容,如果未能解决你的问题,请参考以下文章

Django-filters:单个查询字符串中的多个 ID

Django:在 Django 模板引擎中将 uuid 值转换为字符串

为新发票自动增加 django 后端的发票编号

如何使用 Django ORM 将注释字符串转换为布尔值

pymssql INSERT 不会自动增加 ID

在 django 模型中为 id 设置自动递增初始值