如何在Djang中创建自定义AutoField主键项

2024-06-11 11:33:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在我的帮助台中创建一个自定义主密钥/模型.py我会用它来跟踪我们的服务台问题。我正在为我们的办公室写一个小的计时系统。在

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

id = models.AutoField(primary_key=True)

数据库中的增量为:1,2,3,4….50。。。在

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

我使用的代码如下:

^{pr2}$

其想法是数据库中的条目将是:

HELPDESK-20170813-1
HELPDESK-20170813-2
HELPDESK-20170814-3
...
HELPDESK-20170901-4
...
HELPDESK-20180101-50
...

然后我想用这个作为外键,将帮助台记录单链接到数据库中的其他一些模型。在

现在回来的是:

HELPDESK-20170813-<django.db.models.fields.AutoField>

这篇文章很有用-Custom Auto Increment Field Django想知道是否有更好的方法。如果没有,这就足够了。在


Tags: 方法py模型id数据库models系统密钥
1条回答
网友
1楼 · 发布于 2024-06-11 11:33:02

这对我有用。它是从上面的自定义自动增量字段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

它的名字是这样的:

^{pr2}$

如果给出以下信息:

HEL-20170815-0000
HEL-20170815-0001
HEL-20170815-0002
...

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

HEL-000000000
HEL-000000001
HEL-000000002
...

相关问题 更多 >