diff options
| author | Ian Foote | 2014-04-16 12:32:04 +0100 | 
|---|---|---|
| committer | Ian Foote | 2014-04-16 12:32:04 +0100 | 
| commit | 6c108c459d8cfeda46b8e045ef750c01dd0ffcaa (patch) | |
| tree | 1d34debccd699946dbfd43406c90f0fade730b87 /rest_framework | |
| parent | 1d404874b3f0f5b16f3b38ba322f31a18c41aad6 (diff) | |
| download | django-rest-framework-6c108c459d8cfeda46b8e045ef750c01dd0ffcaa.tar.bz2 | |
Allow customising ChoiceField blank display value
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/fields.py | 8 | ||||
| -rw-r--r-- | rest_framework/tests/test_fields.py | 9 | 
2 files changed, 15 insertions, 2 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 946a5954..d9521cd4 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -509,12 +509,16 @@ class ChoiceField(WritableField):                              'the available choices.'),      } -    def __init__(self, choices=(), *args, **kwargs): +    def __init__(self, choices=(), blank_display_value=None, *args, **kwargs):          self.empty = kwargs.pop('empty', '')          super(ChoiceField, self).__init__(*args, **kwargs)          self.choices = choices          if not self.required: -            self.choices = BLANK_CHOICE_DASH + self.choices +            if blank_display_value is None: +                blank_choice = BLANK_CHOICE_DASH +            else: +                blank_choice = [('', blank_display_value)] +            self.choices = blank_choice + self.choices      def _get_choices(self):          return self._choices diff --git a/rest_framework/tests/test_fields.py b/rest_framework/tests/test_fields.py index e127feef..63dff718 100644 --- a/rest_framework/tests/test_fields.py +++ b/rest_framework/tests/test_fields.py @@ -706,6 +706,15 @@ class ChoiceFieldTests(TestCase):          f = serializers.ChoiceField(required=False, choices=SAMPLE_CHOICES)          self.assertEqual(f.choices, models.fields.BLANK_CHOICE_DASH + SAMPLE_CHOICES) +    def test_blank_choice_display(self): +        blank = 'No Preference' +        f = serializers.ChoiceField( +            required=False, +            choices=SAMPLE_CHOICES, +            blank_display_value=blank, +        ) +        self.assertEqual(f.choices, [('', blank)] + SAMPLE_CHOICES) +      def test_invalid_choice_model(self):          s = ChoiceFieldModelSerializer(data={'choice': 'wrong_value'})          self.assertFalse(s.is_valid())  | 
