mirror of
https://github.com/django/django.git
synced 2025-06-04 02:59:13 +00:00
Fixed #34877 -- Fixed migrations crash when adding GeneratedField with output_field with params.
This commit is contained in:
parent
5e4b75b78a
commit
e7e8eb44a3
@ -159,3 +159,6 @@ class GeneratedField(Field):
|
|||||||
|
|
||||||
def db_parameters(self, connection):
|
def db_parameters(self, connection):
|
||||||
return self.output_field.db_parameters(connection)
|
return self.output_field.db_parameters(connection)
|
||||||
|
|
||||||
|
def db_type_parameters(self, connection):
|
||||||
|
return self.output_field.db_type_parameters(connection)
|
||||||
|
@ -181,6 +181,13 @@ class GeneratedFieldTestMixin:
|
|||||||
field._resolved_expression.output_field.db_type(connection),
|
field._resolved_expression.output_field.db_type(connection),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@skipUnlessDBFeature("supports_collation_on_charfield")
|
||||||
|
def test_db_type_parameters(self):
|
||||||
|
db_type_parameters = self.output_field_model._meta.get_field(
|
||||||
|
"lower_name"
|
||||||
|
).db_type_parameters(connection)
|
||||||
|
self.assertEqual(db_type_parameters["max_length"], 11)
|
||||||
|
|
||||||
def test_model_with_params(self):
|
def test_model_with_params(self):
|
||||||
m = self.params_model.objects.create()
|
m = self.params_model.objects.create()
|
||||||
m = self._refresh_if_needed(m)
|
m = self._refresh_if_needed(m)
|
||||||
|
@ -2,6 +2,7 @@ import datetime
|
|||||||
import itertools
|
import itertools
|
||||||
import unittest
|
import unittest
|
||||||
from copy import copy
|
from copy import copy
|
||||||
|
from decimal import Decimal
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
from django.core.exceptions import FieldError
|
from django.core.exceptions import FieldError
|
||||||
@ -52,7 +53,7 @@ from django.db.models import (
|
|||||||
Value,
|
Value,
|
||||||
)
|
)
|
||||||
from django.db.models.fields.json import KT, KeyTextTransform
|
from django.db.models.fields.json import KT, KeyTextTransform
|
||||||
from django.db.models.functions import Abs, Cast, Collate, Lower, Random, Upper
|
from django.db.models.functions import Abs, Cast, Collate, Lower, Random, Round, Upper
|
||||||
from django.db.models.indexes import IndexExpression
|
from django.db.models.indexes import IndexExpression
|
||||||
from django.db.transaction import TransactionManagementError, atomic
|
from django.db.transaction import TransactionManagementError, atomic
|
||||||
from django.test import TransactionTestCase, skipIfDBFeature, skipUnlessDBFeature
|
from django.test import TransactionTestCase, skipIfDBFeature, skipUnlessDBFeature
|
||||||
@ -829,6 +830,23 @@ class SchemaTests(TransactionTestCase):
|
|||||||
False,
|
False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@isolate_apps("schema")
|
||||||
|
@skipUnlessDBFeature("supports_stored_generated_columns")
|
||||||
|
def test_add_generated_field_with_output_field(self):
|
||||||
|
class GeneratedFieldOutputFieldModel(Model):
|
||||||
|
price = DecimalField(max_digits=7, decimal_places=2)
|
||||||
|
vat_price = GeneratedField(
|
||||||
|
expression=Round(F("price") * Value(Decimal("1.22")), 2),
|
||||||
|
db_persist=True,
|
||||||
|
output_field=DecimalField(max_digits=8, decimal_places=2),
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
app_label = "schema"
|
||||||
|
|
||||||
|
with connection.schema_editor() as editor:
|
||||||
|
editor.create_model(GeneratedFieldOutputFieldModel)
|
||||||
|
|
||||||
@isolate_apps("schema")
|
@isolate_apps("schema")
|
||||||
def test_add_auto_field(self):
|
def test_add_auto_field(self):
|
||||||
class AddAutoFieldModel(Model):
|
class AddAutoFieldModel(Model):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user