Python 如何在Django中创建自定义自动字段主键项

Python 如何在Django中创建自定义自动字段主键项,python,django,django-models,Python,Django,Django Models,我正在尝试在我的帮助台/models.py中创建一个自定义主密钥,我将使用它跟踪我们的帮助台记录单。我正在为我们的办公室写一个小的滴答系统 也许有更好的办法?现在我有: id = models.AutoField(primary_key=True) 这在数据库中的增量为;1,2,3,4…50 我想接受这个id分配,然后在函数中使用它,将其与一些附加信息(如日期和名称“HELPDESK”)结合起来 我使用的代码如下: id = models.AutoField(primary_key=True)

我正在尝试在我的帮助台/models.py中创建一个自定义主密钥,我将使用它跟踪我们的帮助台记录单。我正在为我们的办公室写一个小的滴答系统

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

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
...
然后,我想使用它作为外键,将帮助台记录单链接到数据库中的其他一些模型

现在回来的是:

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

这篇文章很有效——好奇是否有更好的方法。如果没有,这就足够了。

这对我很有用。这是一个稍微修改的版本,来自上面的自定义自动增量字段Django

models.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
...