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

有人知道如何做到这一点吗?希望我的例子能清楚地说明问题。

您可以通过这种方式覆盖保存方法。请注意,类变量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)

最新更新