Thanks a lot for your answer :)

I will definitely use it from now on.

On 03/03/2015 06:59 AM, Simon Charette wrote:
Hi cool-RR,

The following should do:

filtered_chairs = Chair.objects.filter(some_other_lookup=whatever)
desks = Desk.objects.prefetch_related(
    PrefetchRelated('chairs', filtered_chairs, to_attr='filered_chairs'),
PrefetchRelated('nearby_chairs', filtered_chairs, to_attr='filtered_nearby_chairs'),
)

from itertools import chain
for desk in desks:
    for chair in chain(desk.filtered_chairs, desk.filtered_nearby_chairs):
        # ....

It will issue only three queries independently of the number of Chair or Desks you have.

Simon

Le mercredi 25 février 2015 15:05:50 UTC-5, cool-RR a écrit :

    Hi guys,

    I'm trying to solve a problem using the new `Prefetch` but I can't
    figure out how to use it.

    I have these models:

        class Desk(django.db.models.Model):
            pass
        class Chair(django.db.models.Model):
            desk = django.db.models.Foreignkey('Desk',
    related_name='chair',)
            nearby_desks = django.db.models.ManyToManyField(
                'Desk',
                blank=True,
            )

    I want to get a queryset for `Desk`, but it should also include a
    prefetched attribute `favorite_or_nearby_chairs`, whose value
    should be equal to:

        Chair.objects.filter(
            (django.db.models.Q(nearby_desks=desk) |
    django.db.models.Q(desk=desk)),
            some_other_lookup=whatever,
        )

    Is this possible with `Prefetch`? I couldn't figure out how to use
    the arguments.


    Thanks,
    Ram.

--
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 <mailto:django-users+unsubscr...@googlegroups.com>. To post to this group, send email to django-users@googlegroups.com <mailto:django-users@googlegroups.com>.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/726492e7-5f82-4690-a97c-20743592c3f8%40googlegroups.com <https://groups.google.com/d/msgid/django-users/726492e7-5f82-4690-a97c-20743592c3f8%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/54F56F11.6000700%40arkade.info.
For more options, visit https://groups.google.com/d/optout.

Reply via email to