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.