maybe need read de docu
https://docs.djangoproject.com/en/1.5/ref/models/querysets/#select-related

Cheers


On Wed, Apr 10, 2013 at 7:26 AM, bradley griffiths <
bradley.griffi...@gmail.com> wrote:

> Cross posted from: stack 
> overflow<http://stackoverflow.com/questions/15923809/django-queryset-in-operator-on-two-querysets-fails-on-first-call>
> .
>
> When using the 'in' operator on two querysets, the first time the call is
> made it fails.
>
> from django.db import models
> class Category(models.Model):
>     name = models.CharField(max_length=100)
>     slug = models.SlugField(max_length=100, db_index=True, unique=True)
>     def __unicode__(self):
>         return self.name
> class Director(models.Model):
>     name = models.CharField(max_length=100)
>     slug = models.SlugField(max_length=100, db_index=True, unique=True)
>     def __unicode__(self):
>         return self.name
> class Project(models.Model):
>     title = models.CharField(max_length=100)
>     slug = models.SlugField(max_length=100, db_index=True, unique=True)
>     director = models.ForeignKey(Director, 
> related_name='projects_via_director')
>     categories = models.ManyToManyField(Category,
>                                         related_name='projects_via_category')
>     def __unicode__(self):
>         return self.title
>
>
> category_list = Category.objects.prefetch_related('projects_via_category')
> director_list = Director.objects.prefetch_related('projects_via_director')
> other_cats = category_list.filter(
>     projects_via_category__director__slug='steven-spielberg')
> print category_list # [<Category: Film>, <Category: Commercial>]print 
> other_cats # [<Category: Film>]print category_list[0] in other_cats # 
> Falseprint category_list[0] in other_cats # True
>
>
> If I remove 'prefetch_related' and use 'all' instead then the problem is
> gone, however this uses many more DB calls.
>
> How can I get the correct result first time using prefetch_related?
>
> --
> 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 django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> 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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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