Из документации поfind_or_create
:
Примечание:Поскольку find_или_create()читает из базы данных, а затем возможно вставки на основе результата, этот метод подвержен гонке состояние. Другой процесс мог создать запись в таблице после поиск завершен и до начала создания. Избегать этой проблемы используйте find_или_create()внутри транзакции.
Достаточно ли просто использовать find_or_create()
внутри транзакции в PostgreSQL?