diff options
| author | Donald Stufft <donald@stufft.io> | 2013-05-17 15:31:41 -0400 |
|---|---|---|
| committer | Donald Stufft <donald@stufft.io> | 2013-05-18 11:14:05 -0400 |
| commit | a19e9d80ffa10f8da43addcaa4ddd440beee8a4d (patch) | |
| tree | 6c405ce14256de50c1e4a394514a6daaa0410e50 /tests/model_validation | |
| parent | a0c0cc924e4c6ffd22158f254ed9bc9556f05cc4 (diff) | |
Fixed #20430 - Enable iterable of iterables for model choices
Allows for any iterable, not just lists or tuples, to be used as
the inner item for a list of choices in a model.
Diffstat (limited to 'tests/model_validation')
| -rw-r--r-- | tests/model_validation/__init__.py | 0 | ||||
| -rw-r--r-- | tests/model_validation/models.py | 27 | ||||
| -rw-r--r-- | tests/model_validation/tests.py | 14 |
3 files changed, 41 insertions, 0 deletions
diff --git a/tests/model_validation/__init__.py b/tests/model_validation/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/model_validation/__init__.py diff --git a/tests/model_validation/models.py b/tests/model_validation/models.py new file mode 100644 index 0000000000..9a2a5f7cd0 --- /dev/null +++ b/tests/model_validation/models.py @@ -0,0 +1,27 @@ +from django.db import models + + +class ThingItem(object): + + def __init__(self, value, display): + self.value = value + self.display = display + + def __iter__(self): + return (x for x in [self.value, self.display]) + + def __len__(self): + return 2 + + +class Things(object): + + def __iter__(self): + return (x for x in [ThingItem(1, 2), ThingItem(3, 4)]) + + +class ThingWithIterableChoices(models.Model): + + # Testing choices= Iterable of Iterables + # See: https://code.djangoproject.com/ticket/20430 + thing = models.CharField(max_length=100, blank=True, choices=Things()) diff --git a/tests/model_validation/tests.py b/tests/model_validation/tests.py new file mode 100644 index 0000000000..96baf640eb --- /dev/null +++ b/tests/model_validation/tests.py @@ -0,0 +1,14 @@ +import io + +from django.core import management +from django.test import TestCase + + +class ModelValidationTest(TestCase): + + def test_models_validate(self): + # All our models should validate properly + # Validation Tests: + # * choices= Iterable of Iterables + # See: https://code.djangoproject.com/ticket/20430 + management.call_command("validate", stdout=io.BytesIO()) |
