如何将 Django 模型的字段默认值定义为另一个字段值?

How can I define a django model's field default value to be another field value?

在我的模型中有这两个字段:

start_bid = models.IntegerField(default=0)
max_bid =  models.IntegerField(default="the start_bid value")

start_bid 将由用户通过 Django ModelForm 添加一次。 max_bid 可能会改变,也可能不会。 所以我需要 'max_bid' 的第一个值是用户输入的 start_bid 值,然后如果它发生变化,它将被更新。

简而言之,我需要 max_bid 的初始值等于 start_bid!

有什么建议吗?

覆盖模型上的保存方法。

def save(self, force_insert=False, force_update=False, using=None,  update_fields=None):  
        if self._state.adding: 
            self.max_bid = self.start_bid
        super().save(force_insert, force_update, using, update_fields)

解决方法如下:

class Bid(models.Model):
          start_bid = models.IntegerField(default=0)
          max_bid =  models.IntegerField()
          
          def save(self,*args,**kwargs): 
               if not self.max_bid:
                   self.max_bid = self.start_bid   
                
               super(Bid,self).save(*args,**kwargs) #here Bid is my model name. Don't forget to replace Bid with your model name.