What is the all() function in RelatedManager?
The RelatedManager is a Manager and not a QuerySet, but it implements the database-abstraction API and because of that it has all the QuerySet methods such as get(), exclude(), filter() and all().
The difference in calling all() in a RelatedManager is that it actually performs a query in the database. 
The all() method returns a QuerySet.
In django ManyToManyField(), when you refer to it, it is going to return a RelatedManager.
If you want to get the actual objects, you have to call all(), however I don't see any documents describing this behaviour, is RelatedManager a kind of QuerySet? Otherwise, why there can be an all() method?
And after calling all(), is it going to return a QuerySet?