Suppose OrgType has a field called position . This is often the case when you want to present a selection list to users who will select a type. It is very unlikely that your Organization will always take care of this field. Now extrapolate this to other related models with fields that other models do not like, and add in the fact that if you ever want to change one of these fields, you will have to look for every declaration, not just every one where they are used.
This is a mess.
Open your db tool and look at your fields when you want to know what they are. Keep your models clean and readable. If you see a code like this:
organization.org_type.name
It is pretty obvious that OrgType has a name field, without having to look for it, and without having to go through the configuration mess in each model.
source share