<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_dict_for_forms(self):
 """ Build a dictionnary where searchable_fields are next to their model to be use in modelform_factory dico = { "str(model)" : { "model" : Model, "fields" = [] #searchable_fields which are attribute of Model } } """

        magic_dico = field_to_dict(self.searchable_fields)
        dico = {}

        def dict_from_fields_r(mini_dict, dico, model):
            """
            Create the dico recursively from the magic_dico
            """

            dico[str(model)] = {}
            dico[str(model)]["model"] = model
            dico[str(model)]["fields"] = []

            for key, value in mini_dict.items():
                if isinstance(value, bool):
                    continue
                if value == EMPTY_DICT:
                    dico[str(model)]["fields"].append(key)
                elif EMPTY_DICT.items() <= value.items():
                    dico[str(model)]["fields"].append(key)
                    model_tmp = associate_model(model, key)
                    dict_from_fields_r(value, dico, model_tmp)
                else:
                    model_tmp = associate_model(model, key)
                    dict_from_fields_r(value, dico, model_tmp)

        if magic_dico:
            dict_from_fields_r(magic_dico, dico, self.model)
        return dico