Однозапросный 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. Но я хочу поискать существующие решения, прежде чем настраивать вызовы в моем коде один за другим.