Django устанавливает значение модели, используя другое значение той же модели
Я создаю настольную игру, и я хочу установить значение job_exp используя значение age, я пытался использовать метод redefined save, но он изменяет значение после каждого сохранения, поэтому я пытаюсь создать метод, но я получил:
TypeError: неподдерживаемый тип(ы) операнда для -: 'IntegerField' и 'int'
Вот модели:
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 или у вас есть идеи, как решить эту проблему?
Вы можете сделать это, переопределив метод .save() для подобных случаев. Здесь вы можете проверить, что если экземпляр не имеет значения pk, то это новый экземпляр и он должен быть создан.
def save(self, *args, **kwargs):
if not self.pk:
self.job_exp = randint(0, self.age - 18)
super().save(*args, **kwargs)