Если я перебираю в цикле выборку объектов из базы, и при обработке одного из объектов выборки изменяю другой объект, также входящий в выборку, меняя его внешний ключ и удаляя сторонний объект, на который ключ указывал перед изменением, то, когда внешний цикл дойдет до измененного объекта - эго экземпляр в выборке все еще содержит старое значение ключа, указывающее на уже удаленный сторонний объект, и при обращении по нему вылетает DoesNotExist.
Пример для наглядности: я перебираю выборку объектов аудиозаписей модели Recording, ссылающихся на объекты музыки Music. При обработке объекта Recording может выполнится условие, требующее объединения некоторых существующих объектов Music; при этом внешние ключи ссылающихся на них Recording надо перенаправить на объединенный объект, а лишние объекты Music, информация из которых перемещена в объединенный - удалить. При этом в оставшейся части выборки Recordings могут оказаться старые экземпляры только что измененных объектов Recordings, ссылающиеся на удаленные при объединении объекты Music, и, когда цикл дойдет до них - вылетит эксепшн.
Как правильно решается эта проблема?