diff --git a/src/c3nav/editor/views/edit.py b/src/c3nav/editor/views/edit.py index e673c626..2765c739 100644 --- a/src/c3nav/editor/views/edit.py +++ b/src/c3nav/editor/views/edit.py @@ -248,7 +248,7 @@ def list_objects(request, model=None, level=None, space=None, explicit_edit=Fals if level is not None: reverse_kwargs['level'] = level level = get_object_or_404(Level, pk=level) - queryset = queryset.filter(level=level) + queryset = queryset.filter(level=level).defer('geometry') ctx.update({ 'back_url': reverse('editor.levels.detail', kwargs={'pk': level.pk}), 'back_title': _('back to level'), @@ -260,7 +260,7 @@ def list_objects(request, model=None, level=None, space=None, explicit_edit=Fals elif space is not None: reverse_kwargs['space'] = space space = get_object_or_404(Space.objects.select_related('level'), pk=space) - queryset = queryset.filter(space=space) + queryset = queryset.filter(space=space).defer('geometry') ctx.update({ 'level': space.level, 'back_url': reverse('editor.spaces.detail', kwargs={'level': space.level.pk, 'pk': space.pk}), diff --git a/src/c3nav/editor/wrappers.py b/src/c3nav/editor/wrappers.py index c34f6ba1..a191a9c7 100644 --- a/src/c3nav/editor/wrappers.py +++ b/src/c3nav/editor/wrappers.py @@ -199,6 +199,8 @@ class ModelInstanceWrapper(BaseWrapper): for field in self._obj._meta.get_fields(): if not isinstance(field, Field): continue + if field.name in self._obj.get_deferred_fields(): + continue if field.related_model is None: if field.primary_key: continue @@ -415,6 +417,12 @@ class BaseQueryWrapper(BaseWrapper): return True return self._obj.exists() + def only(self, *fields): + return self._wrap_queryset(self._obj.only(*fields)) + + def defer(self, *fields): + return self._wrap_queryset(self._obj.defer(*fields)) + @get_queryset def order_by(self, *args): """