On Thu, Mar 12, 2009 at 11:24 PM, adrian <adrian...@gmail.com> wrote:

>
> I have a view that does not evaluate a queryset, it just adds filters
> and order_by and then
> passes it to Paginator (set to 50 per page) and the result is passed
> to the template.    The following SQL is generated (with some fields
> omitted for clarity).  I'm using Django 1.0.2 and MySQL 5.1.
>
> SELECT `lister_importedsighting`.`id`,
> `lister_importedsighting`.`user_id`,
> `lister_importedsighting`.`date_added`,
> `lister_importedsighting`.`active`,
> `lister_importedsighting`.`tax_order` FROM `lister_importedsighting`
> WHERE (`lister_importedsighting`.`user_id` = 1  AND
> `lister_importedsighting`.`birdlist_area` = ABA ) ORDER BY
> `lister_importedsighting`.`species_name` ASC LIMIT 50
>
> SELECT `lister_importedsighting`.`id`,
> `lister_importedsighting`.`user_id`,
> `lister_importedsighting`.`date_added`,
> `lister_importedsighting`.`active`,
> `lister_importedsighting`.`tax_order` FROM `lister_importedsighting`
> WHERE (`lister_importedsighting`.`user_id` = 1  AND
> `lister_importedsighting`.`birdlist_area` = ABA ) LIMIT 21
>
> SELECT `lister_importedsighting`.`id`,
> `lister_importedsighting`.`user_id`,
> `lister_importedsighting`.`date_added`,
> `lister_importedsighting`.`active`,
> `lister_importedsighting`.`tax_order` FROM `lister_importedsighting`
> WHERE (`lister_importedsighting`.`user_id` = 1  AND
> `lister_importedsighting`.`birdlist_area` = ABA ) ORDER BY
> `lister_importedsighting`.`species_name` ASC LIMIT 21
>
> SELECT `lister_importedsighting`.`id`,
> `lister_importedsighting`.`user_id`,
> `lister_importedsighting`.`date_added`,
> `lister_importedsighting`.`active`,
> `lister_importedsighting`.`tax_order` FROM `lister_importedsighting`
> WHERE (`lister_importedsighting`.`user_id` = 1  AND
> `lister_importedsighting`.`birdlist_area` = ABA ) ORDER BY
> `lister_importedsighting`.`species_name` ASC LIMIT 21
>
> My question is why are the last 3 queries present, and where did limit
> 21 come from, a number not present in my view at all?
>

They're coming from some code attempting to print or take the repr of the
queryset.  See:

http://groups.google.com/group/django-users/msg/e20328499c793e41

(It looks like there may be more than one queryset variable involved here --
one of those LIMIT 21 queries doesn't have an order by clause.)


> It matters because in some cases my SQL queries are much more
> expensive than this, and they
> run for every page if Paginated.


If it's not immediately clear to you where these calls to repr are coming
from it might be worth trying to track them down.  Years ago querysets in a
template context would get evaluated as a side-effect of attempting to
access a non-existant template variable (see
http://groups.google.com/group/django-users/browse_thread/thread/82df8bb71571fdbf/35089038df9c1976)
but that was fixed a long time ago.  It looks like something, though, is
doing similar with the querysets you are working with here.  Are you running
with any debugging plugins or other code that might be doing processing on
your template context?

Karen

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to