diff --git a/django/db/models/fields/composite.py b/django/db/models/fields/composite.py index 550a440dcf..2b196f6d2a 100644 --- a/django/db/models/fields/composite.py +++ b/django/db/models/fields/composite.py @@ -56,6 +56,8 @@ class CompositePrimaryKey(Field): raise ValueError("CompositePrimaryKey cannot have a default.") if kwargs.get("db_default", NOT_PROVIDED) is not NOT_PROVIDED: raise ValueError("CompositePrimaryKey cannot have a database default.") + if kwargs.get("db_column", None) is not None: + raise ValueError("CompositePrimaryKey cannot have a db_column.") if kwargs.setdefault("editable", False): raise ValueError("CompositePrimaryKey cannot be editable.") if not kwargs.setdefault("primary_key", True): diff --git a/tests/composite_pk/test_checks.py b/tests/composite_pk/test_checks.py index 58b580ca85..c803d521cc 100644 --- a/tests/composite_pk/test_checks.py +++ b/tests/composite_pk/test_checks.py @@ -43,6 +43,11 @@ class CompositePKChecksTests(TestCase): with self.assertRaisesMessage(ValueError, expected_message): models.CompositePrimaryKey("tenant_id", "id", db_default=models.F("id")) + def test_composite_pk_cannot_have_a_db_column(self): + expected_message = "CompositePrimaryKey cannot have a db_column." + with self.assertRaisesMessage(ValueError, expected_message): + models.CompositePrimaryKey("tenant_id", "id", db_column="tenant_pk") + def test_composite_pk_cannot_be_editable(self): expected_message = "CompositePrimaryKey cannot be editable." with self.assertRaisesMessage(ValueError, expected_message):