Selaa lähdekoodia

Loanding pins does no N+1 queries anymore

This saves another three queries per pin, bringing to total query count
down to 8.

See issue #85 .
pull/86/head
Jens Gutermuth 9 vuotta sitten
vanhempi
commit
3bcc6d3152
1 muutettua tiedostoa jossa 6 lisäystä ja 2 poistoa
  1. +6
    -2
      pinry/core/api.py

+ 6
- 2
pinry/core/api.py Näytä tiedosto

@@ -1,3 +1,4 @@
from django.core.exceptions import ObjectDoesNotExist
from tastypie import fields
from tastypie.authorization import DjangoAuthorization
from tastypie.constants import ALL, ALL_WITH_RELATIONS
@@ -59,7 +60,10 @@ class UserResource(ModelResource):

def filter_generator_for(size):
def wrapped_func(bundle, **kwargs):
return bundle.obj.get_by_size(size)
for thumbnail in bundle.obj._prefetched_objects_cache['thumbnail']:
if thumbnail.size == size:
return thumbnail
raise DoesNotExist()
return wrapped_func


@@ -136,7 +140,7 @@ class PinResource(ModelResource):
'submitter': ALL_WITH_RELATIONS
}
queryset = Pin.objects.all().select_related('submitter'). \
prefetch_related('image', 'tags')
prefetch_related('image__thumbnail_set', 'tags')
resource_name = 'pin'
include_resource_uri = False
always_return_data = True


Ladataan…
Peruuta
Tallenna