Also, I strongly recommend reading through this document for an idea of
when queries do and don't hit the database:
https://docs.djangoproject.com/en/1.5/topics/db/optimization/

Additionally, take a look at django-debug-toolbar, which will show you
all the queries that go into returning a view, how long they take, and a
bunch of other useful debugging info. It's seriously awesome, and a
must-have for view optimization:
https://github.com/django-debug-toolbar/django-debug-toolbar

_Nik

On 3/7/2013 10:35 AM, Fatih Tiryakioglu wrote:
> Thank you Nicolas,
>
> This works:
> reg = p.groupregistration_set.all().select_related('group')
> name = reg[0].group.name
>
> This also works:
> name = p.groupregistration_set.all().select_related('group')[0].group.name
>
>
> 1) Is there any difference? Which one is beter.
> 2) reg = p.groupregistration_set.all().select_related('group')
>     name = reg[0].group.name
>          does second line result in db hit???
> 3) name =
> p.groupregistration_set.all().select_related('group')[0].group.name
>          this is 1 or 2 hit??
>
> and an optional 10 points question:
> 4) If I had two members of reg list, how to modify the code above?
>
>
> Thanks again..
>
>
> --
>
>
>
>
> --
>
> On Thursday, March 7, 2013 6:35:14 PM UTC+2, Nikolas Stevenson-Molnar
> wrote:
>
>     The biggest hit is probably going to be the reg.group call. You can
>     optimize that by using select_related (), which will take what is
>     currently 1 + (number of group registrations for the user) queries
>     and
>     turn it into 2 queries:
>
>     reg = p.groupregistration_set.all().select_related('group')
>
>     More on select_related:
>     https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related
>     
> <https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related>
>
>
>     _Nik
>
>     On 3/6/2013 11:18 PM, Fatih Tiryakioglu wrote:
>     > Hi all,
>     >
>     > Is there any shortcut (minimum db hit) for the following querysets:
>     >
>     > p = Person.objects.get(mail="[email protected] <javascript:>")
>     > p.password & form.password comparison and it is ok.
>     >
>     > #reversing to the person's groupregisteration, for example:
>     > reg = p.groupregistration_set.all() #groupregistratin model is
>     simply
>     > person (foreign key) and group (foreign key)
>     >
>     > #evaluating group of reg list.
>     > g = reg.group (for the every member of reg list)
>     >
>     > #and finally group name
>     > n = g.name <http://g.name> (for the every member of g list)
>     >
>     > Which queryset or querysets hits the db, and how can I minimize it.
>     >
>     >
>     >
>     > Thanks.
>     > --
>     >
>     >
>     > --
>     > You received this message because you are subscribed to the Google
>     > Groups "Django users" group.
>     > To unsubscribe from this group and stop receiving emails from
>     it, send
>     > an email to [email protected] <javascript:>.
>     > To post to this group, send email to [email protected]
>     <javascript:>.
>     > Visit this group at
>     http://groups.google.com/group/django-users?hl=en
>     <http://groups.google.com/group/django-users?hl=en>.
>     > For more options, visit https://groups.google.com/groups/opt_out
>     <https://groups.google.com/groups/opt_out>.
>     >  
>     >  
>
> -- 
> You received this message because you are subscribed to the Google
> Groups "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/django-users?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to