improve performance a little bit by deferring geometry field in list

This commit is contained in:
Laura Klünder 2017-06-23 00:09:28 +02:00
parent c24130f058
commit 857f0c0a09
2 changed files with 10 additions and 2 deletions

View file

@ -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}),

View file

@ -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):
"""