mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #20581 -- Added support for deferrable unique constraints.
This commit is contained in:
committed by
Mariusz Felisiak
parent
555e3a848e
commit
c226c6cb32
@@ -1414,3 +1414,47 @@ class ConstraintsTests(TestCase):
|
||||
]
|
||||
|
||||
self.assertEqual(Model.check(databases=self.databases), [])
|
||||
|
||||
def test_deferrable_unique_constraint(self):
|
||||
class Model(models.Model):
|
||||
age = models.IntegerField()
|
||||
|
||||
class Meta:
|
||||
constraints = [
|
||||
models.UniqueConstraint(
|
||||
fields=['age'],
|
||||
name='unique_age_deferrable',
|
||||
deferrable=models.Deferrable.DEFERRED,
|
||||
),
|
||||
]
|
||||
|
||||
errors = Model.check(databases=self.databases)
|
||||
expected = [] if connection.features.supports_deferrable_unique_constraints else [
|
||||
Warning(
|
||||
'%s does not support deferrable unique constraints.'
|
||||
% connection.display_name,
|
||||
hint=(
|
||||
"A constraint won't be created. Silence this warning if "
|
||||
"you don't care about it."
|
||||
),
|
||||
obj=Model,
|
||||
id='models.W038',
|
||||
),
|
||||
]
|
||||
self.assertEqual(errors, expected)
|
||||
|
||||
def test_deferrable_unique_constraint_required_db_features(self):
|
||||
class Model(models.Model):
|
||||
age = models.IntegerField()
|
||||
|
||||
class Meta:
|
||||
required_db_features = {'supports_deferrable_unique_constraints'}
|
||||
constraints = [
|
||||
models.UniqueConstraint(
|
||||
fields=['age'],
|
||||
name='unique_age_deferrable',
|
||||
deferrable=models.Deferrable.IMMEDIATE,
|
||||
),
|
||||
]
|
||||
|
||||
self.assertEqual(Model.check(databases=self.databases), [])
|
||||
|
||||
Reference in New Issue
Block a user