我有以下型号:
class Atividades_cumpridas(models.Model):
id_atividade = models.ForeignKey(Atividade, on_delete=models.CASCADE)
id_jogador = models.ForeignKey(Jogador, on_delete=models.CASCADE)
pontos_xp_ganhos = models.IntegerField()
def __str__(self):
str = self.id_atividade.nome_atividade + ' - ' + self.id_jogador.nome_jogador
return str
我希望根据pntos_xp_ganhos
设置Atividade.pontos_XP_maximo
最大值。我该怎么做并在管理编辑页面上显示最大值?
答案 0 :(得分:1)
有两种方法可以做到,
自定义验证器:
from django.core.exceptions import ValidationError
def validate_range(value):
if value > Atividade.pontos_XP_maximo:
raise ValidationError('Max value should be %s' % Atividade.pontos_XP_maximo
)
class Atividades_cumpridas(models.Model):
...
...
pontos_xp_ganhos = models.IntegerField(validators=[validate_range])
使用内置验证器:
MIN = 0
MAX = Atividade.pontos_XP_maximo
from django.core.validators import MinValueValidator, MaxValueValidator
class Atividades_cumpridas(models.Model):
...
...
pontos_xp_ganhos = models.IntegerField(validators=[MinValueValidator(MIN), MaxValueValidator(MAX)]