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)