def get_child_type_choices(self, request, action):
        choices = super(ChildModelPluginPolymorphicParentModelAdmin, self) \
            .get_child_type_choices(request, action)
        plugins = self.child_model_plugin_class.get_plugins()
        labels = {}
        sort_priorities = {}
        if plugins:
            for plugin in plugins:
                pk = plugin.content_type.pk
                labels[pk] = capfirst(plugin.verbose_name)
                sort_priorities[pk] = getattr(plugin, 'sort_priority', labels[pk])
            choices = [(ctype, labels[ctype]) for ctype, _ in choices]
            return sorted(choices,
                cmp=lambda a, b: cmp(
                    sort_priorities[a[0]],
                    sort_priorities[b[0]]
                )
            )
        return choices