Django,根据在同一模型中其他字段中输入的值,为一个字段分配复合值?

Django, assigning a composite value to one field depending upon values entered in other fields in same model?

我是 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

有人知道如何实现吗?希望我的例子能清楚地说明问题。

您可以通过这种方式覆盖保存方法。请注意,class 变量与原始内置 class 名称冲突请迁移一次,因为我更改了变量名称

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)