﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
28888	Index added to _meta.indexes with Meta.indexes=[] yields two equal addIndex() operations.	Jan Pieter Waagmeester	nobody	"I use a custom field derived from `django.contrib.postgres.fields.JSONField`, which adds an `GinIndex` to `model._meta.indexes`:
{{{
from django.contrib.postgres.fields import JSONField
from django.contrib.postgres.indexes import GinIndex

class CustomJSONField(JSONField):
    def contribute_to_class(self, cls, name):
        super(CustomJSONField, self).contribute_to_class(cls, name)

        index = GinIndex(fields=[name])
        index.set_name_with_model(cls)
        cls._meta.indexes.append(index)
}}}

When used in a model like this, 
{{{
class Blog(models.Model):
    title = models.CharField(max_length=100)
    json = CustomJSONField()
}}}

Migrations for model and index are created as expected:
{{{
./manage.py --version
1.11.8
./manage.py makemigrations app
Migrations for 'app':
  app/migrations/0001_initial.py
    - Create model Blog
    - Create index app_blog_json_2cf556_gin on field(s) json of model blog
}}}

But when I add an empty list of indexes to `class Meta` like this:

{{{
class Blog(models.Model):
    title = models.CharField(max_length=100)
    json = CustomJSONField()

    class Meta:
        indexes = []
}}}
two indexes are created:

{{{
rm -rf app/migrations
./manage.py --version
1.11.8
./manage.py makemigrations app
Migrations for 'app':
  app/migrations/0001_initial.py
    - Create model Blog
    - Create index app_blog_json_2cf556_gin on field(s) json of model blog
    - Create index app_blog_json_2cf556_gin on field(s) json of model blog
}}}

Which of course results in `django.db.utils.ProgrammingError: relation ""app_blog_json_2cf556_gin"" already exists`.

"	Uncategorized	new	Migrations	1.11	Normal				Unreviewed	0	0	0	0	0	0
