Django:如何基于外键atribute设置整型字段的最大值?
我有以下型号:Django:如何基于外键atribute设置整型字段的最大值?,django,web,django-models,django-forms,django-admin,Django,Web,Django Models,Django Forms,Django Admin,我有以下型号: 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 __
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
我想根据
Atividade.pontos\u xp\u maximo
设置pntos\u xp\u ganhos
最大值。我如何才能做到这一点并在管理编辑页面上显示最大值?有两种方法可以做到这一点
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)]
使用内置验证器:
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)]
有两种方法可以做到这一点
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)]
使用内置验证器:
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)]
但对于每一种阿维德,我都有不同的pontos_XP_maximo@RonaldoSilveira请举例说明,如果我有一个id=1的Atividade,我会有,比如说,pontos_XP_maximo=30。对于id=2的Atividade,它将是50。@罗纳尔多西韦拉是Atividade,pontos_XP_maximo是预定义的>否,Atividade是一个模型,pontos_XP_maximo是一个字段。所以它们在te数据库中,可能会被修改。但对于每个Atividade,我有一个不同的pontos_XP_maximo@RonaldoSilveira请举例说明,如果我有一个id=1的Atividade,我会有,比如说,pontos_XP_maximo=30。对于id=2的Atividade,它将是50。@罗纳尔多西韦拉是Atividade,pontos_XP_maximo是预定义的>否,Atividade是一个模型,pontos_XP_maximo是一个字段。所以它们在te数据库中,可能会被更改。