Вы, видимо, пришли из мира PHP, где на каждый запрос загружается скрипт, завершающийся после обработки этого запроса. С Django это не так, проект загружается один раз и бесконечно обрабатывает запросы, как сервер.
Ivan Palamarchuk: если select и insert в одной транзакции, никакого окна быть не может. Таблица блокируется на изменение для всех до конца транзакции. Под большой нагрузкой это, правда, приведёт к снижению скорости. Но другого выхода просто нет.
Антон: стараться чтобы выборка по конкретному пользователю не была слишком большой. Или, если количество пользователей небольшое, а считать надо все данные, то можно построить частичные индексы и выбирать reltuples для них.
zkweb: зачем? Проверяйте данные в clean, там вызывайте ValidationError, а действия зависящие от данных, типа отправки почты, делайте в form_valid. Разделите логику проверки данных и реакции на данные.
zkweb: clean() - это для проверки правильности данных, действия лучше выполнять во вьюхе. На сколько я помню, у вас используются CBV, используйте метод form_valid.