Django: Как установить максимальное значение целочисленного поля на основе атрибута внешнего ключа? - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть следующая модель:

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.Как я могу сделать это и показать максимальное значение на странице редактирования администратора?

1 Ответ

0 голосов
/ 24 апреля 2018

Есть два способа сделать это:

  1. Использование пользовательских валидаторов
  2. Использование встроенных валидаторов

пользовательских валидаторов:

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)]
...