summaryrefslogtreecommitdiff
path: root/django/db/backends/sqlite3/schema.py
diff options
context:
space:
mode:
authorHannes Ljungberg <hannes.ljungberg@gmail.com>2021-02-06 20:45:54 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-02-23 20:19:53 +0100
commit3aa545281e0c0f9fac93753e3769df9e0334dbaa (patch)
tree454bec922a78df9ecfe6eab197e7750e8a5bafac /django/db/backends/sqlite3/schema.py
parent19ce1d493ae7cbc1e704d338077b1f5f5e5769c9 (diff)
downloaddjango-3aa545281e0c0f9fac93753e3769df9e0334dbaa.tar.gz
Fixed #30916 -- Added support for functional unique constraints.
Thanks Ian Foote and Mariusz Felisiak for reviews.
Diffstat (limited to 'django/db/backends/sqlite3/schema.py')
-rw-r--r--django/db/backends/sqlite3/schema.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/django/db/backends/sqlite3/schema.py b/django/db/backends/sqlite3/schema.py
index 6a2c887612..b089a9d355 100644
--- a/django/db/backends/sqlite3/schema.py
+++ b/django/db/backends/sqlite3/schema.py
@@ -419,13 +419,17 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor):
self.delete_model(old_field.remote_field.through)
def add_constraint(self, model, constraint):
- if isinstance(constraint, UniqueConstraint) and constraint.condition:
+ if isinstance(constraint, UniqueConstraint) and (
+ constraint.condition or constraint.contains_expressions
+ ):
super().add_constraint(model, constraint)
else:
self._remake_table(model)
def remove_constraint(self, model, constraint):
- if isinstance(constraint, UniqueConstraint) and constraint.condition:
+ if isinstance(constraint, UniqueConstraint) and (
+ constraint.condition or constraint.contains_expressions
+ ):
super().remove_constraint(model, constraint)
else:
self._remake_table(model)