summaryrefslogtreecommitdiff
path: root/django/db/backends/sqlite3
diff options
context:
space:
mode:
authorPaveł Tyślacki <pavel.tyslacki@gmail.com>2018-12-27 22:21:59 +0300
committerTim Graham <timograham@gmail.com>2019-01-12 09:50:20 -0500
commitb69f8eb04cc8762d3dfd5af5ea1fc58e3f2ebcc3 (patch)
tree6662b0cfe731e1912ff157ed46540be87cbec2bc /django/db/backends/sqlite3
parent1e837c4b2351c83b1c902314ddfdfa15c63bc60d (diff)
Fixed #30062 -- Added support for unique conditional constraints.
Diffstat (limited to 'django/db/backends/sqlite3')
-rw-r--r--django/db/backends/sqlite3/schema.py11
1 files changed, 9 insertions, 2 deletions
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)