Hello,

Thanks for the link :)
I think the documentation would be better structured, then, if
https://docs.djangoproject.com/fr/4.0/ref/models/querysets/ would
reference your link.

I have not read all of Django documentation.
I do not know if it is expected that most developers would read everything.
Hence, I learn using Google top ranked pages inside Django
documentation when I search for a narrow topic on Django.
If I search
django prefetch
django prefetching
django prefetch_related
django prefetch_related_objets
I have https://docs.djangoproject.com/fr/4.0/ref/models/querysets/ as
first result but your link does not appear.
If I search
django cache
django caching
I get this
https://docs.djangoproject.com/fr/4.0/topics/cache/
but also your link as the third answer of Google.
Maybe, adding a link to /topics/db/optimization from
ref/models/querysets/ would help Google and people like me find this
information more easily :)

Best regards,
    Laurent Lyaudet


Le ven. 24 juin 2022 à 08:05, Jason <[email protected]> a écrit :
>
>
> This is explicitly called out in the documentation at 
> https://docs.djangoproject.com/en/4.0/topics/db/optimization/#understand-queryset-evaluation
> On Thursday, June 23, 2022 at 1:17:50 PM UTC-4 [email protected] wrote:
>>
>> Hello,
>>
>> I made a simple test to check the number of queries done :
>>
>> # First part
>> order = Order.objects.get(id=22222)  # one query
>> items = list(order.items.all())  # one query
>> items = list(order.items.all())  # one query
>> items = list(order.items.all())  # one query
>>
>> # Second part
>> order = Order.objects.prefetch_related("items").get(id=22222)  # two queries
>> items = list(order.items.all())  # no query
>> items = list(order.items.all())  # no query
>> items = list(order.items.all())  # no query
>>
>> # Third part
>> order = Order.objects.get(id=22222)  # one query
>> prefetch_related_objects([order], "items")  # one query
>> items = list(order.items.all())  # no query
>> items = list(order.items.all())  # no query
>> items = list(order.items.all())  # no query
>> prefetch_related_objects([order], "items")  # no more query
>> prefetch_related_objects([order], "items")  # no more query
>>
>> I was surprised that there was 4 queries for the First part of the test 
>> instead of 2 for the other parts, because I was expecting that .all() would 
>> also fill the cache and not only use it.
>> Maybe it is intended.
>> I think that this test or something else explaining this point could enhance 
>> the documentation on prefetch_related() and prefetch_related_objects().
>> I advised my colleagues to use prefetch_related_objects() when in doubt 
>> whether the objects given have been already extended with prefetching.
>>
>> Best regards,
>>      Laurent Lyaudet
>>
>>
>>
>>
> --
> You received this message because you are subscribed to a topic in the Google 
> Groups "Django users" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/django-users/CLnzKAcrE-A/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to 
> [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/01353b97-2b21-4d52-aab7-3046f93a5e1dn%40googlegroups.com.

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAB1LBmssEnOGAAiKJDdLbL226oguyryJTkMUsKNYLTg1%3D89Urg%40mail.gmail.com.

Reply via email to