On Tue, Dec 6, 2011 at 1:42 PM, Szabo, Patrick (LNG-VIE)
<patrick.sz...@lexisnexis.at> wrote:
> Hi,
>
>
>
> I’v got this piece of code:
>
>
>
> def get_my_choices(gruppe):
>
>     users = User.objects.all()
>
>     choices_list = ()
>
>     for user in users:
>
>         try:
>
>             for groupe in gruppe:
>
>                 for groupe2 in user.groups.all():
>
>                     if groupe2 == groupe and (user.id,user) not in
> choices_list and groupe2.name not in
> ['Timesheet-Boss','TimeSheet-Manager','Projektleiter','Normal-User','Manager']:
>
>                         choices_list += ((user.id,user),)
>
>         except:
>
>             pass
>
>     return choices_list
>
>
>
> The parameter is the result of a user.groups.all() call.
>
> This function causes over db-queries and I was wondering if anyone sees a
> way of optimizing that a little bit.
>
> I was playing around with values_list() but couldn’t get it working.
>

If gruppe is a queryset, then isn't this equivalent:

def get_my_choices(groups):
    bad_group_names = [ 'blah', 'wibble' ]
    grps = groups.exclude(name__in=bad_group_names)
    qs = User.objects.filter(groups__in=grps)
    return [ (user.id, user) for user in qs ]

Cheers

Tom

-- 
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