Django.db.utils.ProgrammingError: ограничение уже существует

Итак, я пытаюсь сделать свой собственный файл миграции для создания разделов для моих таблиц, я создал пользовательскую CreatePartitionedModel, чтобы сделать работу за меня, но я продолжаю получать db.utils.ProgrammingError, говоря, что у меня есть дублирование в моих ограничениях:

django.db.utils.ProgrammingError: constraint "summary_result_id_d5ba54ba_fk_token_id" 
for relation "summary" already exists

Моя пользовательская CreateModel :

class CreatePartitionedModel(CreateModel):
def __init__(self, name, fields, partition_sql='LIST(lang)', **kwargs):
    self.partition_sql = partition_sql
    super().__init__(name, fields, **kwargs)

def database_forwards(self, app_label, schema_editor, from_state, to_state):
    collector = type(schema_editor)(
        schema_editor.connection, collect_sql=True, atomic=False
    )
    with collector:
        super().database_forwards(
            app_label, collector, from_state, to_state
        )
    collected_sql = collector.collected_sql
    schema_editor.deferred_sql.extend(
        collector.deferred_sql
    )

    model = to_state.apps.get_model(app_label, self.name)
    create_table = 'CREATE TABLE %s' % schema_editor.quote_name(
        model._meta.db_table
    )

    all_langs = ['en','fr','ar','es','da','de','it','ja','nl','pl','pt','ru','zh']
    langs_partition = ""
    
    for sql in collected_sql:
        if str(sql).startswith(create_table):

            for lang in all_langs:
                langs_partition+=f"create table {self.options['db_table']}_{lang} partition of {self.options['db_table']} for values in ('{lang}');"
            
            primary_keys = ",primary key (id ,lang ),unique ( lang, id))"   
            sql = sql.replace("serial NOT NULL PRIMARY KEY","serial NOT NULL") 
            sql = '%s %s PARTITION BY %s; %s' % (sql.rstrip(');'), primary_keys,self.partition_sql, langs_partition)
        schema_editor.execute(sql)

а это мой файл миграции и таблица, в которой у меня возникли проблемы:

CreatePartitionedModel(
        name='Summary',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('base', models.CharField(max_length=255)),
            ('pattern', models.CharField(max_length=255)),
            ('lang', models.CharField(max_length=255)),
            ('frequency', models.IntegerField()),
            ('relevance', models.FloatField(null=True)),
            ('count', models.FloatField(null=True)),
            ('result', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='results', to='main.token')),
        ],
        options={
            'db_table': 'summary',
        },
    ),
Вернуться на верх