gpt4 book ai didi

python - Django 生成自定义 ID

转载 作者:太空宇宙 更新时间:2023-11-04 07:05:15 26 4
gpt4 key购买 nike

我看到了this answer但目前还没有具体的答案。我想创建以字母开头的自定义 id。当一条新记录进入数据库时​​,我想将 id 更改为 A00001,.... A00002,.... A00010,...A10000 等。id将始终在 99999- 00001 范围内,那么我该怎么做呢?

我的模型很简单:

class Custom(models.Model):
id = models.AutoField(primary_key=True, editable=False)

最佳答案

AutoField 字段是一种 IntegerField 字段,因此您不能将 PK 用作 A00001 .

因此,实现需求的可能方法是将AutoField更改为CharField。< br/>
从技术上讲,您可以使用“String PK Field”但是,如果您打算使用它,您应该意识到问题/性能问题。

在这里,我发现了一篇很好的 SO 帖子,它解释了相同的内容 - Strings as Primary Keys in SQL Database

========================================== ==============================

如果您仍然真的希望迁移到字符串 PK,请阅读以下内容

首先,您需要使用 CharField 而不是 AutoField 并覆盖 save() 模型方法

<b>from django.db.models import Max</b>


class Custom(models.Model):
id = models.<b>CharField</b>(primary_key=True, editable=False, max_length=10)
name = models.CharField(max_length=100)

<b>def save(self, **kwargs):
if not self.id:
max = Custom.objects.aggregate(id_max=Max('id'))['id_max']
self.id = "{}{:05d}".format('A', max if max is not None else 1)
super().save(*kwargs)</b>

关于python - Django 生成自定义 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52070462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com