Last active
January 2, 2016 21:19
-
-
Save chriskief/8362744 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.forms import ModelForm | |
from django.forms import ValidationError | |
from django.forms import FileField | |
# Django 1.6 Version | |
class BaseModelForm(ModelForm): | |
# strip leading or trailing whitespace | |
def _clean_fields(self): | |
for name, field in self.fields.items(): | |
# value_from_datadict() gets the data from the data dictionaries. | |
# Each widget type knows how to retrieve its own data, because some | |
# widgets split data over several HTML fields. | |
value = field.widget.value_from_datadict(self.data, self.files, | |
self.add_prefix(name)) | |
try: | |
if isinstance(field, FileField): | |
initial = self.initial.get(name, field.initial) | |
value = field.clean(value, initial) | |
else: | |
if isinstance(value, basestring): | |
value = field.clean(value.strip()) | |
else: | |
value = field.clean(value) | |
self.cleaned_data[name] = value | |
if hasattr(self, 'clean_%s' % name): | |
value = getattr(self, 'clean_%s' % name)() | |
self.cleaned_data[name] = value | |
except ValidationError as e: | |
self._errors[name] = self.error_class(e.messages) | |
if name in self.cleaned_data: | |
del self.cleaned_data[name] | |
# Django 1.7 Version | |
# (makes use of new add_error API - https://docs.djangoproject.com/en/1.7/ref/forms/api/#django.forms.Form.add_error) | |
class BaseModelForm(ModelForm): | |
# strip leading or trailing whitespace | |
def _clean_fields(self): | |
for name, field in self.fields.items(): | |
# value_from_datadict() gets the data from the data dictionaries. | |
# Each widget type knows how to retrieve its own data, because some | |
# widgets split data over several HTML fields. | |
value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name)) | |
try: | |
if isinstance(field, FileField): | |
initial = self.initial.get(name, field.initial) | |
value = field.clean(value, initial) | |
else: | |
if isinstance(value, basestring): | |
value = field.clean(value.strip()) | |
else: | |
value = field.clean(value) | |
self.cleaned_data[name] = value | |
if hasattr(self, 'clean_%s' % name): | |
value = getattr(self, 'clean_%s' % name)() | |
self.cleaned_data[name] = value | |
except ValidationError as e: | |
self.add_error(name, e) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment