Vlad, в таких случаях следует приводить свой образцово-показательный вариант.
Тут локально трудно что-то сильно улучшить. Хотя можно, как минимум, вынести цикл чтения очередного идентификатора в отдельную функцию (вот уже действительно - "размазывать" вполне естественный вложенный цикл по циклу Дейкстры можно только в угоду идеологическим тараканам). Если же брать шире - то очень странно, что отсутствуют готовые средства фрэймворка для чтения/записи моделей как последовательности символов, без отвлечения на атрибуты, вьюшки (и фиг знает чего еще, что, возможно, не учтено в обсуждаемом цикле или сломает его при добавлении чего-то нового в модель).