From: Stephen Burrows Date: Wed, 22 Jun 2011 17:11:23 +0000 (-0400) Subject: Minor optimization to AttributeForm. Very slightly reduces the number of queries... X-Git-Tag: philo-0.9.1^2~7^2^2~6 X-Git-Url: http://git.ithinksw.org/philo.git/commitdiff_plain/6374d707e43e0e010360dfab9ef19d0dfb7ef3ef Minor optimization to AttributeForm. Very slightly reduces the number of queries in the admin for Entities. --- diff --git a/philo/admin/forms/attributes.py b/philo/admin/forms/attributes.py index 5372ab3..4a6dd67 100644 --- a/philo/admin/forms/attributes.py +++ b/philo/admin/forms/attributes.py @@ -21,7 +21,7 @@ class AttributeForm(ModelForm): # This is necessary because model forms store changes to self.instance in their clean method. # Mutter mutter. value = self.instance.value - self._cached_value_ct = self.instance.value_content_type + self._cached_value_ct_id = self.instance.value_content_type_id self._cached_value = value # If there is a value, pull in its fields. @@ -32,7 +32,7 @@ class AttributeForm(ModelForm): def save(self, *args, **kwargs): # At this point, the cleaned_data has already been stored on self.instance. - if self.instance.value_content_type != self._cached_value_ct: + if self.instance.value_content_type_id != self._cached_value_ct_id: # The value content type has changed. Clear the old value, if there was one. if self._cached_value: self._cached_value.delete() @@ -42,8 +42,8 @@ class AttributeForm(ModelForm): # Now create a new value instance so that on next instantiation, the form will # know what fields to add. - if self.instance.value_content_type is not None: - self.instance.value = self.instance.value_content_type.model_class().objects.create() + if self.instance.value_content_type_id is not None: + self.instance.value = ContentType.objects.get_for_id(self.instance.value_content_type_id).model_class().objects.create() elif self.instance.value is not None: # The value content type is the same, but one of the value fields has changed.