'Return all related objects pointing to the current model. The related
objects can come from a one-to-one, one-to-many, or many-to-many field
relation type.
Private API intended only to be used by Django itself; get_fields()
combined with filtering of field properties is the public API for
obtaining this field list.'

@cached_property
def related_objects(self):

    all_related_fields = self._get_fields(forward=False, reverse=True, include_hidden=True)
    return make_immutable_fields_list('related_objects', (obj for obj in all_related_fields if ((not obj.hidden) or obj.field.many_to_many)))
