如何在 django 中将模型字段的默认值设置为相同模式的另一个字段

问题描述 投票:0回答:1

我在 django 项目中创建了一个学生模型,其中有一个名为“enrollmentdate”和“ paymentdate”的字段,现在我需要将“ paymentdate”保存为“enrollmentdate”中的默认值

我的模型代码如下,

> ```
class Student(models.Model):
fname = models.CharField(max_length=100)
lname = models.CharField(max_length=100)
email = models.CharField(max_length=100)
password=models.CharField(max_length=100)
contactno = models.CharField(max_length=100)
address = models.TextField()
grade=models.CharField(max_length=100)
enrollmentstartdate=models.DateField()
enrollmentenddate=models.DateField()
daysremaining=models.IntegerField()
feespaid=models.DecimalField(max_digits=6, decimal_places=2)
paymentdate=models.DateField()  
> ```

我该怎么做?

提前致谢

我已经尝试过了

注册日期=models.DateField(默认=付款日期)

但不起作用

django datetime-format
1个回答
0
投票

您可以通过重写模型的 save() 方法来实现此目的。

class Student(models.Model):
    fname = models.CharField(max_length=100)
    lname = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    password = models.CharField(max_length=100)
    contactno = models.CharField(max_length=100)
    address = models.TextField()
    grade = models.CharField(max_length=100)
    enrollmentstartdate = models.DateField()
    enrollmentenddate = models.DateField()
    daysremaining = models.IntegerField()
    feespaid = models.DecimalField(max_digits=6, decimal_places=2)
    paymentdate = models.DateField()

    def save(self, *args, **kwargs):
        if not self.enrollmentstartdate:  
            self.enrollmentstartdate = self.paymentdate  
        super(Student, self).save(*args, **kwargs)  

每当您保存学生对象并且未提供注册开始日期时,它将默认为付款日期的值。

© www.soinside.com 2019 - 2024. All rights reserved.