Пользовательский первичный ключ в Django

Итак, я создаю проект под названием "Электронная справочная библиотека" (ЭСБ). Я использую Django 3.2 для создания этого приложения, и вот модель таблицы Resource.

class Resource (models.Model):
    resource_id = models.CharField(primary_key=True, max_length=20)
    type = models.CharField(choices=RESOURCETYPE, default="WebLink", max_length=10)
    link = models.URLField()
    subject = models.ForeignKey(YearGroupSubject, on_delete=models.CASCADE)
    topic = models.CharField(max_length=50)
    description = models.TextField()
    unit_no = models.CharField(max_length=10)

    search_query = models.CharField(max_length=300)
    status = models.CharField(choices=STATUS, default="Pending", max_length=30)
    posted_by = models.ForeignKey(ProfileStaff)
    posted = models.DateTimeField(auto_now=True)
    approved_time = models.DateTimeField(null=True, blank=True)
    views = models.PositiveIntegerField(default=0)

В этом случае мой клиент хотел получить пользовательский первичный ключ, формат которого должен быть примерно таким MATH-YYMMDD-HHMMSS-00.

  • Где MATH заменяется первичным ключом таблицы YearGroupSubject, который представляет собой 4-буквенную строку.
  • Где YYMMDD-HHMMSS заменяется текущей датой и временем.
  • Замена 00 на любое случайное целое число (может быть даже 5 целых чисел, не страшно).

Но я не знаю, как иметь пользовательский первичный ключ, который автоматически генерируется Django.

Возможно ли это? Если нет, есть ли другая лучшая альтернатива?

Любая помощь будет очень признательна.

Спасибо!

Вернуться на верх