gpt4 book ai didi

python - 如何在 Django 中创建自定义 AutoField primary_key 条目

转载 作者:行者123 更新时间:2023-12-03 23:56:25 25 4
gpt4 key购买 nike

我正在尝试在我的 helpdesk/models.py 中创建一个自定义的 primary_key,我将用它来跟踪我们的服务台票证。我正在为我们的办公室编写一个小型滴答系统。

也许有更好的方法?现在我有:

id = models.AutoField(primary_key=True)

这在数据库中增加为; 1、2、3、4....50...

我想接受这个 id 分配,然后在一个函数中使用它,将它与一些附加信息(如日期和名称“HELPDESK”)结合起来。

我使用的代码如下:
id = models.AutoField(primary_key=True)

def build_id(self, id):
join_dates = str(datetime.now().strftime('%Y%m%d'))
return (('HELPDESK-' + join_dates) + '-' + str(id))

ticket_id = models.CharField(max_length=15, default=(build_id(None, id)))

这个想法是数据库中的条目将是:
HELPDESK-20170813-1
HELPDESK-20170813-2
HELPDESK-20170814-3
...
HELPDESK-20170901-4
...
HELPDESK-20180101-50
...

然后我想使用它作为 ForeignKey 将服务台票证链接到数据库中的其他一些模型。

现在回来的是:
HELPDESK-20170813-<django.db.models.fields.AutoField>

这篇文章有效 - Custom Auto Increment Field Django好奇是否有更好的方法。如果没有,这就足够了。

最佳答案

这对我有用。它是从上面的自定义自动增量字段 Django 稍微修改的版本。

模型.py

def increment_helpdesk_number():
last_helpdesk = helpdesk.objects.all().order_by('id').last()

if not last_helpdesk:
return 'HEL-' + str(datetime.now().strftime('%Y%m%d-')) + '0000'

help_id = last_helpdesk.help_num
help_int = help_id[13:17]
new_help_int = int(help_int) + 1
new_help_id = 'HEL-' + str(datetime.now().strftime('%Y%m%d-')) + str(new_help_int).zfill(4)

return new_help_id

它是这样叫的:
help_num = models.CharField(max_length=17, unique=True, default=increment_helpdesk_number, editable=False)

如果给你以下信息:
HEL-20170815-0000
HEL-20170815-0001
HEL-20170815-0002
...

编号不会在每天之后重新开始,我可能会考虑这样做。我想得越多;但是,我不确定我是否需要那里的日期,因为我已经在模型中有一个创建日期字段。所以我可以把它改成:
HEL-000000000
HEL-000000001
HEL-000000002
...

关于python - 如何在 Django 中创建自定义 AutoField primary_key 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45665076/

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