Django看不到我的验证器

时间:2013-12-29 01:41:10

标签: python django validation

我想使用自己定制的验证器。问题是,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从哪里调用它,并且不知道在哪里寻找该函数。我该怎么办?

1 个答案:

答案 0 :(得分:1)

方法moneyValidator应在类声明之前声明:

def moneyValidator(x):
    ...

class Market(models.Model):
    money = models.DecimalField(max_digits = 15, decimal_places=2, validators=[moneyValidator])