【发布时间】:2020-06-01 07:13:30
【问题描述】:
我正在用 Django 开发一个应用程序。
我想在我的模型中插入一个自动递增的字母数字唯一 ID 字段,默认情况下具有固定的字母部分和自动递增的数字部分。但我也希望可用性从管理部分更改为另一个字母数字的,具有不同的字母数字和数字部分。
我 tryed 来实现这个,但结果是试图实现这样一个字段并使其成为模型的自动字段会在我的数据库中产生问题。
所以我改变了我的目标:现在我想实现一个基于时间的字母数字唯一字段,其中包含预定义的字母部分。 请注意:我不想覆盖 django 默认 id 字段,我只想在我的模型中包含一个字段,该字段作为默认值获取唯一的自定义字母数字值。
这是我所做的,在我的 models.py 中:
def return_timestamped_id():
prefix = "ITCH"
import time
this_time = time.time()
this_time = this_time *10000000
this_time = int(this_time)
timestamp = str(this_time)
default_value = prefix + timestamp
return(default_value)
class object_example(models.Model):
name = models.CharField(max_length=256, blank=True, null=True)
Id_generated = models.CharField(max_length=256, blank=False, null=False, unique=True, default=return_timestamped_id())
问题在于,当我从管理部分向该模型添加对象时,
Id_generated 总是一样的。
我希望每次添加新对象时都会调用return_timestamped_id() 函数。很明显,它只调用一次,然后将相同的返回值传递给每个新对象的Id_generated。
如何更改我的代码以便在每次添加新对象时获得不同的时间戳?
【问题讨论】:
-
你想要
default=return_timestamped_id没有()。
标签: python django django-models timestamp unique