Я занимаюсь разработкой приложения на Django.
Я хотел вставить в свою модель автоматически увеличивающееся буквенно-цифровое поле уникального идентификатора, имеющее по умолчанию фиксированную алфавитную часть и автоматически увеличивающееся числовое значение. часть. Но я также хочу, чтобы доступность менялась из административной части этого идентификатора в другой буквенно-цифровой, с другой буквенно-цифровой и числовой частью.
Я попытался реализовать это, но оказалось, что попытка реализовать такое поле и сделать его автоматическим полем модели вызывает проблемы в моей базе данных.
Итак Я меняю свою цель: теперь я хочу реализовать основанное на времени буквенно-цифровое уникальное поле с предопределенной частью aplphabeti c. Обратите внимание : я не хочу перезаписывать поле идентификатора по умолчанию django, я просто хочу включить в мою модель поле, которое получает в качестве значения по умолчанию уникальное индивидуальное буквенно-цифровое значение.
Вот что я сделал в своем файле 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
каждого нового объекта.
Как я могу изменить свой код, чтобы каждый раз получать новую метку времени объект добавлен?