I have never encountered this issue in Django. Perhaps your post lacks some context. Is `friends` a custom method/property? Asking because I'm used to seeing attributes like `friends_set`.
The only scenario I see where your example would need `prefetch_related` is if your snippet looked something like this:
{% for user in all_users %}
<ul>
{% for friend in user.friends.all %}
<li>{{ friend.name }}</li>
{% endfor %}
</ul>
{% endfor %}
To avoid the classic N+1 query problem, all_users must be loaded like so: User.objects.all().prefetch_related("friends")
If you're writing verbose expressions such as this in Django: User.objects.filter(pk=<pk>).prefetch_related("friends").first()
You must be doing something wrong.