mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Fixed #35815 -- Made system check accept db_default literals when DatabaseFeatures.supports_expression_defaults = False.
This commit is contained in:
parent
63dbe30d33
commit
c4614b53d3
@ -392,7 +392,10 @@ class Field(RegisterLookupMixin):
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
self.db_default is NOT_PROVIDED
|
self.db_default is NOT_PROVIDED
|
||||||
or isinstance(self.db_default, Value)
|
or (
|
||||||
|
isinstance(self.db_default, Value)
|
||||||
|
or not hasattr(self.db_default, "resolve_expression")
|
||||||
|
)
|
||||||
or databases is None
|
or databases is None
|
||||||
):
|
):
|
||||||
return []
|
return []
|
||||||
|
@ -1207,6 +1207,23 @@ class InvalidDBDefaultTests(TestCase):
|
|||||||
expected_error = Error(msg=msg, obj=field, id="fields.E012")
|
expected_error = Error(msg=msg, obj=field, id="fields.E012")
|
||||||
self.assertEqual(errors, [expected_error])
|
self.assertEqual(errors, [expected_error])
|
||||||
|
|
||||||
|
def test_literals_not_treated_as_expressions(self):
|
||||||
|
"""
|
||||||
|
DatabaseFeatures.supports_expression_defaults = False shouldn't
|
||||||
|
prevent non-expression literals (integer, float, boolean, etc.) from
|
||||||
|
being used as database defaults.
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Model(models.Model):
|
||||||
|
field = models.FloatField(db_default=1.0)
|
||||||
|
|
||||||
|
field = Model._meta.get_field("field")
|
||||||
|
with unittest.mock.patch.object(
|
||||||
|
connection.features, "supports_expression_defaults", False
|
||||||
|
):
|
||||||
|
errors = field.check(databases=self.databases)
|
||||||
|
self.assertEqual(errors, [])
|
||||||
|
|
||||||
|
|
||||||
@isolate_apps("invalid_models_tests")
|
@isolate_apps("invalid_models_tests")
|
||||||
class GeneratedFieldTests(TestCase):
|
class GeneratedFieldTests(TestCase):
|
||||||
|
Loading…
Reference in New Issue
Block a user