Однозапросный get_or_create в Django и Postgres

В настоящее время Django выполняет get_or_create как серию из двух отдельных вызовов:

1. try get
2. perform create if the DoesNotExist exception was thrown

Это может привести к возникновению IntegrityError исключения, если экземпляр был создан сразу после того, как было выброшено исключение DoesNotExist.

Есть ли какое-нибудь существующее решение, позволяющее заменить текущий код django на специфичный для postgres однозапросный get_or_create? Нет проблем, если решение работает только с postgres в качестве бэкенда. Бонусные очки, если оно также позволяет асинк aget_or_create.

Я знаю, что это должно быть возможно на posgres, как в принятом ответе в этом вопросе SO: Write a Postgres Get or Create SQL Query. Но я хочу поискать существующие решения, прежде чем настраивать вызовы в моем коде один за другим.

Вернуться на верх