Django, присвоение составного значения одному полю в зависимости от значений, введенных в другие поля в той же модели?

Я новичок в django. В настоящее время я пытаюсь установить значение, которое является первичным ключом и не редактируемым, автоматически генерируемым в зависимости от значений, введенных в той же модели, в некоторые другие поля. Вот пример:

   class Student(models.Model):
      student_id = models.CharField(max_length=100, primary_key=true)
      name  = models.CharField(max_length=100)
      class  = models.CharField(max_length=200)
      roll_no  = models.CharField(max_length=500)

Итак, я пытаюсь добиться того, что если кто-то введет следующую информацию :

name = Haris
class = 8th
roll_no = 104011

Автоматически созданный первичный ключ, который не будет редактируемым для поля "student_id", будет таким:

student_id = Haris_8th_104011

Есть ли у кого-нибудь идея, как этого добиться? Надеюсь, мой пример прояснил запрос.

Вы можете сделать это, переопределив метод save. Обратите внимание, что переменная класса clashesh с оригинальным именем встроенного класса, пожалуйста, мигрируйте один раз, так как я изменил имя переменной

class Student(models.Model):
    student_id = models.CharField(max_length=100, primary_key=True, editable=False)
    name = models.CharField(max_length=100)

    classes = models.CharField(max_length=200)

    roll_no = models.CharField(max_length=500)

    def save(self, *args, **kwargs):
        self.student_id = f'{self.name}_{self.classes}_{self.roll_no}'
        super(Student,self).save(*args, **kwargs)
Вернуться на верх