|
14 | 14 | from django.db.models import Q |
15 | 15 | from django.db.models.fields import FieldDoesNotExist |
16 | 16 | from django.db.models.loading import get_model |
| 17 | +from django.forms.widgets import Media |
17 | 18 | from django.template.loader import render_to_string |
18 | 19 | from django.utils.datastructures import SortedDict |
19 | 20 | from django.utils.encoding import force_unicode |
@@ -139,6 +140,7 @@ def __init__(self, item): |
139 | 140 |
|
140 | 141 | self.item = item |
141 | 142 | self.content_type_instances = self._fetch_content_type_instances(item) |
| 143 | + self.media_cache = None |
142 | 144 |
|
143 | 145 | def _fetch_content_type_counts(self, item, regions=None): |
144 | 146 | tmpl = 'SELECT %d AS ct_idx, COUNT(id) FROM %s WHERE parent_id=%s' |
@@ -220,18 +222,18 @@ def __getattr__(self, attr): |
220 | 222 | instances = self.__dict__['content_type_instances'] |
221 | 223 | return instances.get(attr, []) |
222 | 224 |
|
223 | | - |
224 | 225 | def _get_media(self): |
225 | | - from django.forms.widgets import Media |
226 | | - media = Media() |
| 226 | + if self.media_cache is None: |
| 227 | + media = Media() |
227 | 228 |
|
228 | | - instances = self.__dict__['content_type_instances'] |
229 | | - for contents in instances.values(): |
230 | | - for content in contents: |
231 | | - if hasattr(content, 'media'): |
232 | | - media = media + content.media |
| 229 | + instances = self.__dict__['content_type_instances'] |
| 230 | + for contents in instances.values(): |
| 231 | + for content in contents: |
| 232 | + if hasattr(content, 'media'): |
| 233 | + media = media + content.media |
233 | 234 |
|
234 | | - return media |
| 235 | + self.media_cache = media |
| 236 | + return self.media_cache |
235 | 237 | media = property(_get_media) |
236 | 238 |
|
237 | 239 |
|
|
0 commit comments