diff --git a/django/db/backends/base/schema.py b/django/db/backends/base/schema.py index 6303248127..91351e5c9e 100644 --- a/django/db/backends/base/schema.py +++ b/django/db/backends/base/schema.py @@ -313,8 +313,6 @@ class BaseDatabaseSchemaEditor: yield column_db_type if collation := field_db_params.get("collation"): yield self._collate_sql(collation) - if self.connection.features.supports_comments_inline and field.db_comment: - yield self._comment_sql(field.db_comment) # Work out nullability. null = field.null # Add database default. @@ -373,6 +371,8 @@ class BaseDatabaseSchemaEditor: and field.unique ): yield self.connection.ops.tablespace_sql(tablespace, inline=True) + if self.connection.features.supports_comments_inline and field.db_comment: + yield self._comment_sql(field.db_comment) def column_sql(self, model, field, include_default=False): """ diff --git a/tests/schema/tests.py b/tests/schema/tests.py index c0c284672b..f734525dcc 100644 --- a/tests/schema/tests.py +++ b/tests/schema/tests.py @@ -4861,6 +4861,24 @@ class SchemaTests(TransactionTestCase): comment, ) + @skipUnlessDBFeature("supports_comments", "supports_stored_generated_columns") + def test_add_db_comment_generated_field(self): + comment = "Custom comment" + field = GeneratedField( + expression=Value(1), + db_persist=True, + output_field=IntegerField(), + db_comment=comment, + ) + field.set_attributes_from_name("volume") + with connection.schema_editor() as editor: + editor.create_model(Author) + editor.add_field(Author, field) + self.assertEqual( + self.get_column_comment(Author._meta.db_table, "volume"), + comment, + ) + @skipUnlessDBFeature("supports_comments") def test_add_db_comment_and_default_charfield(self): comment = "Custom comment with default"