Before this change, all Django model fields & properties were automatically called. This is suboptimal, because this results in 2 new problems:
-
For related fields, the related model were looked up and converted to their string version. This results in unnecessary and unexpected SQL queries (field is never rendered / displayed, but it is queried).
-
For properties, unpredictable behaviour can occur. We don't know the algorithm in properties and thus we don't know any side effects.
This change will by default either call all model fields (implicitly), or it will call only the user-requested fields (explicitly).