From b69f8eb04cc8762d3dfd5af5ea1fc58e3f2ebcc3 Mon Sep 17 00:00:00 2001 From: Paveł Tyślacki Date: Thu, 27 Dec 2018 22:21:59 +0300 Subject: Fixed #30062 -- Added support for unique conditional constraints. --- django/db/backends/sqlite3/schema.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'django/db/backends/sqlite3') diff --git a/django/db/backends/sqlite3/schema.py b/django/db/backends/sqlite3/schema.py index e8e40bbe34..b1c91dba3c 100644 --- a/django/db/backends/sqlite3/schema.py +++ b/django/db/backends/sqlite3/schema.py @@ -4,6 +4,7 @@ from decimal import Decimal from django.apps.registry import Apps from django.db.backends.base.schema import BaseDatabaseSchemaEditor from django.db.backends.ddl_references import Statement +from django.db.models import UniqueConstraint from django.db.transaction import atomic from django.db.utils import NotSupportedError @@ -398,7 +399,13 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor): self.delete_model(old_field.remote_field.through) def add_constraint(self, model, constraint): - self._remake_table(model) + if isinstance(constraint, UniqueConstraint) and constraint.condition: + super().add_constraint(model, constraint) + else: + self._remake_table(model) def remove_constraint(self, model, constraint): - self._remake_table(model) + if isinstance(constraint, UniqueConstraint) and constraint.condition: + super().remove_constraint(model, constraint) + else: + self._remake_table(model) -- cgit v1.3