It depends. This will only run one query, when negated_queryset is
used.

queryset = User.objects.filter(first_name='vinicius')
negated_queryset = User.objects.exclude(id__in=queryset.values("id"))

Since the first queryset is not evaluated until it's used in the
negated_queryset (as a subquery).

On Mar 22, 5:55 pm, Matt Schinckel <m...@schinckel.net> wrote:
> On Mar 23, 6:17 am, Phlip <phlip2...@gmail.com> wrote:
>
> > > Just create another queryset that excludes everything in your first
> > > queryset:
>
> > > negated_queryset = User.objects.exclude(id__in=queryset.values("id"))
>
> > QuerySets are already so easy to plug-n-play... Ain't there a way to
> > do it without whacking the database twice?
>
> Are you sure it hits the db twice? I seem to recall a similar case
> where I thought I was, but since the queryset evaluation is lazy, the
> ORM potentially has the ability to make this into a single query.
>
> (I can't recall if when I did this sort of thing I was using
> SQLAlchemy, but I _think_ it was pure django).
>
> Matt.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@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