mirror of
				https://github.com/django/django.git
				synced 2025-10-30 17:16:10 +00:00 
			
		
		
		
	Used @cached_property for BaseForm.changed_data.
This commit is contained in:
		
				
					committed by
					
						 Tim Graham
						Tim Graham
					
				
			
			
				
	
			
			
			
						parent
						
							9f73009e98
						
					
				
				
					commit
					c6c00fbfbb
				
			| @@ -16,6 +16,7 @@ from django.utils import six | ||||
| from django.utils.encoding import ( | ||||
|     force_text, python_2_unicode_compatible, smart_text, | ||||
| ) | ||||
| from django.utils.functional import cached_property | ||||
| from django.utils.html import conditional_escape, format_html, html_safe | ||||
| from django.utils.safestring import mark_safe | ||||
| from django.utils.translation import ugettext as _ | ||||
| @@ -92,7 +93,6 @@ class BaseForm(object): | ||||
|         self.label_suffix = label_suffix if label_suffix is not None else _(':') | ||||
|         self.empty_permitted = empty_permitted | ||||
|         self._errors = None  # Stores the errors after clean() has been called. | ||||
|         self._changed_data = None | ||||
|  | ||||
|         # The base_fields class attribute is the *class-wide* definition of | ||||
|         # fields. Because a particular *instance* of the class might want to | ||||
| @@ -434,10 +434,9 @@ class BaseForm(object): | ||||
|         """ | ||||
|         return bool(self.changed_data) | ||||
|  | ||||
|     @property | ||||
|     @cached_property | ||||
|     def changed_data(self): | ||||
|         if self._changed_data is None: | ||||
|             self._changed_data = [] | ||||
|         data = [] | ||||
|         for name, field in self.fields.items(): | ||||
|             prefixed_name = self.add_prefix(name) | ||||
|             data_value = field.widget.value_from_datadict(self.data, self.files, prefixed_name) | ||||
| @@ -453,11 +452,11 @@ class BaseForm(object): | ||||
|                         self.data, self.files, initial_prefixed_name)) | ||||
|                 except ValidationError: | ||||
|                     # Always assume data has changed if validation fails. | ||||
|                         self._changed_data.append(name) | ||||
|                     data.append(name) | ||||
|                     continue | ||||
|             if field.has_changed(initial_value, data_value): | ||||
|                     self._changed_data.append(name) | ||||
|         return self._changed_data | ||||
|                 data.append(name) | ||||
|         return data | ||||
|  | ||||
|     @property | ||||
|     def media(self): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user