Browse Source

Refs #373 -- Errored when providing db_column to CompositePrimaryKey.

Jacob Walls 2 months ago
parent
commit
2a61b5f97c
2 changed files with 7 additions and 0 deletions
  1. 2 0
      django/db/models/fields/composite.py
  2. 5 0
      tests/composite_pk/test_checks.py

+ 2 - 0
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):

+ 5 - 0
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):