如何将 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.
在我的模型中有这两个字段:
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.