Django设置模型值,使用相同模型的另一个值

jxct1oxe  于 2022-12-14  发布在  Go
关注(0)|答案(1)|浏览(240)

我正在创建一个棋盘游戏,我想使用一个age值设置valuejob_exp,我尝试使用重新定义的保存方法,但每次保存后它都会更改值,因此我尝试创建方法,但我得到:
TypeError:不支援的算子类型-:'整数字段'和'整数'
以下是模型:

class Character(models.Model):
    def set_job_exp(age):
        return randint(0, age - 18)

    age = models.IntegerField("Age",default=randint(18, 100))
    job_exp = models.IntegerField('Job exp',blank=True,default=set_job_exp(age)

如何将IntegerField转换为int或者你有什么想法如何解决它?

ocebsuys

ocebsuys1#

你可以通过重新定义.保存()方法来实现这一点。在这里你可以检查一个示例是否没有pk值,那么它是一个新的示例,即将被创建。

def save(self, *args, **kwargs):
    if not self.pk:
        self.job_exp = randint(0, self.age - 18)
    super().save(*args, **kwargs)

相关问题