How add condition "IF NOT EXISTS" to AddIndexConcurrently in Django Migrations?

Viewed 184

I want to add index on model field concurrently using AddIndexConcurrently. How can I add condition "IF NOT EXISTS"?

  • Now my query run like CREATE INDEX CONCURRENTLY "chat_chatmessage_type_idx" ON "chats_chatmessage" ("type");
  • But I need to transform it to CREATE INDEX CONCURRENTLY IF NOT EXISTS "chat_chatmessage_type_idx" ON "chats_chatmessage" ("type");
database_operations=[
                AddIndexConcurrently(
                    model_name='chatmessage',
                    index=models.Index(
                        fields=["type"],
                        name="chat_chatmessage_type_idx",
                        condition=??something like this - Q("IF NOT EXISTS")??
                    )
                )]

I'm using django 3.1.7 and PostgreSQL

1 Answers

I don't think that's possible while looking at the schema used by Django.

You could use RunSQL to run CREATE INDEX CONCURRENTLY IF NOT EXISTS "chat_chatmessage_type_idx" ON "chats_chatmessage" ("type"); but that's a quite hacky solution.

Related