我想使用自己定制的验证器。问题是,Django无法看到验证器。
models.py:
class Market(models.Model):
money = models.DecimalField(max_digits = 15, decimal_places=2, validators=[moneyValidator])
D = decimal.Decimal
def moneyValidator(x):
if not convStr(x):
raise ValidationError
if (x <= 0) or (x >= PAYOFF) or (D(str(x))%D('0.01') != 0):
raise ValidationError
def convStr(x):
try:
str(x)
return True
except ValueError:
return False
错误讯息:
NameError: name 'moneyValidator' is not defined
我认为正在发生的事情是Django从哪里调用它,并且不知道在哪里寻找该函数。我该怎么办?
答案 0 :(得分:1)
方法moneyValidator
应在类声明之前声明:
def moneyValidator(x):
...
class Market(models.Model):
money = models.DecimalField(max_digits = 15, decimal_places=2, validators=[moneyValidator])