diff options
author | Hannes Ljungberg <hannes.ljungberg@gmail.com> | 2021-02-06 20:45:54 +0100 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-02-23 20:19:53 +0100 |
commit | 3aa545281e0c0f9fac93753e3769df9e0334dbaa (patch) | |
tree | 454bec922a78df9ecfe6eab197e7750e8a5bafac /django/db/backends/sqlite3/schema.py | |
parent | 19ce1d493ae7cbc1e704d338077b1f5f5e5769c9 (diff) | |
download | django-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.py | 8 |
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) |