<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _get_child_admin_site(self, rel):
 """ Returns the separate AdminSite instance that django-polymorphic maintains for child models. This admin site needs to be passed to the widget so that it passes the check of whether the field is pointing to a model that's registered in the admin. The hackiness of this implementation reflects the hackiness of the way django-polymorphic does things. """

        if rel.to not in self.admin_site._registry:
            # Go through the objects the model inherits from and find one
            # that's registered in the main admin and has a reference to the
            # child admin site in it attributes.
            for parent in rel.to.mro():
                if parent in self.admin_site._registry \
                and hasattr(self.admin_site._registry[parent], '_child_admin_site'):
                    return self.admin_site._registry[parent]._child_admin_site
        return self.admin_site