diff options
| author | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2025-09-19 16:27:51 +0200 |
|---|---|---|
| committer | nessita <124304+nessita@users.noreply.github.com> | 2025-10-13 14:53:39 -0300 |
| commit | 5b51e6f759f2ba993219347435149173c756c478 (patch) | |
| tree | 69f6b88a9d858b1401983b009cff07b8c214a921 /tests/invalid_models_tests | |
| parent | edde2891c355103ba455f3fea95cff962e40962c (diff) | |
Fixed #36611, Refs #36580 -- Added system check for multicolumn ForeignObject in Meta.indexes/constraints/unique_together.
ForeignObjects with multiple `from_fields` are not supported in these
options.
Co-authored-by: Jacob Walls <jacobtylerwalls@gmail.com>
Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>
Diffstat (limited to 'tests/invalid_models_tests')
| -rw-r--r-- | tests/invalid_models_tests/test_models.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/invalid_models_tests/test_models.py b/tests/invalid_models_tests/test_models.py index 5780704eae..2a39e250bd 100644 --- a/tests/invalid_models_tests/test_models.py +++ b/tests/invalid_models_tests/test_models.py @@ -166,6 +166,54 @@ class UniqueTogetherTests(SimpleTestCase): ], ) + def test_pointing_to_foreign_object(self): + class Reference(models.Model): + reference_id = models.IntegerField(unique=True) + + class ReferenceTab(models.Model): + reference_id = models.IntegerField() + reference = models.ForeignObject( + Reference, + from_fields=["reference_id"], + to_fields=["reference_id"], + on_delete=models.CASCADE, + ) + + class Meta: + unique_together = [["reference"]] + + self.assertEqual(ReferenceTab.check(), []) + + def test_pointing_to_foreign_object_multi_column(self): + class Reference(models.Model): + reference_id = models.IntegerField(unique=True) + code = models.CharField(max_length=1) + + class ReferenceTabMultiple(models.Model): + reference_id = models.IntegerField() + code = models.CharField(max_length=1) + reference = models.ForeignObject( + Reference, + from_fields=["reference_id", "code"], + to_fields=["reference_id", "code"], + on_delete=models.CASCADE, + ) + + class Meta: + unique_together = [["reference"]] + + self.assertEqual( + ReferenceTabMultiple.check(), + [ + Error( + "'unique_together' refers to a ForeignObject 'reference' with " + "multiple 'from_fields', which is not supported for that option.", + obj=ReferenceTabMultiple, + id="models.E049", + ), + ], + ) + @isolate_apps("invalid_models_tests") class IndexesTests(TestCase): |
