mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	[soc2009/model-validation] Added capacity for ComplexValidator handling to models
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/model-validation@11271 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -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() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user