diff options
Diffstat (limited to 'tests/modeltests/validation/models.py')
| -rw-r--r-- | tests/modeltests/validation/models.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/tests/modeltests/validation/models.py b/tests/modeltests/validation/models.py index e41fc3b332..c00b7f28d2 100644 --- a/tests/modeltests/validation/models.py +++ b/tests/modeltests/validation/models.py @@ -1,6 +1,7 @@ from datetime import datetime from django.core.exceptions import ValidationError +from django.core.validators import ComplexValidator from django.db import models from django.test import TestCase @@ -8,13 +9,21 @@ def validate_answer_to_universe(value): if value != 42: raise ValidationError('This is not the answer to life, universe and everything!') +class ValidateFieldNotEqualsOtherField(ComplexValidator): + def __init__(self, other_field): + self.other_field = other_field + + def __call__(self, value, all_values={}, obj=None): + if value == self.get_value(self.other_field, all_values, obj): + raise ValidationError("Must not equal to %r's value" % self.other_field) + class ModelToValidate(models.Model): name = models.CharField(max_length=100) created = models.DateTimeField(default=datetime.now) number = models.IntegerField() parent = models.ForeignKey('self', blank=True, null=True) email = models.EmailField(blank=True) - f_with_custom_validator = models.IntegerField(blank=True, null=True, validators=[validate_answer_to_universe]) + f_with_custom_validator = models.IntegerField(blank=True, null=True, validators=[validate_answer_to_universe, ValidateFieldNotEqualsOtherField('number')]) def validate(self): super(ModelToValidate, self).validate() |
