diff options
| author | Tom Christie | 2012-12-11 00:55:12 -0800 |
|---|---|---|
| committer | Tom Christie | 2012-12-11 00:55:12 -0800 |
| commit | e20b0bc45b82e2be1f74fc98315b1d5843cb6347 (patch) | |
| tree | 794c55ca1406b3cef65e20a18399cbbc26707898 | |
| parent | ff01ae3571298b9da67f9b9583f0cb264676ed2b (diff) | |
| parent | d0935d1fbb87711b0ffda8655c44ede29ee4208a (diff) | |
| download | django-rest-framework-e20b0bc45b82e2be1f74fc98315b1d5843cb6347.tar.bz2 | |
Merge pull request #491 from markotibold/#490
get_excluded_fieldnames() should respect Meta options' ability to be eit...
| -rw-r--r-- | rest_framework/serializers.py | 6 | ||||
| -rw-r--r-- | rest_framework/tests/serializer.py | 5 |
2 files changed, 7 insertions, 4 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 7eab9860..c3f260c7 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -132,9 +132,9 @@ class BaseSerializer(Field): Returns the fieldnames that should not be validated. """ excluded_fields = list(self.opts.exclude) - for field in self.fields.keys() + self.get_default_fields().keys(): - if self.opts.fields: - if field not in self.opts.fields + self.opts.exclude: + if self.opts.fields: + for field in self.fields.keys() + self.get_default_fields().keys(): + if field not in list(self.opts.fields) + excluded_fields: excluded_fields.append(field) return excluded_fields diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py index 455fa270..a16f6abd 100644 --- a/rest_framework/tests/serializer.py +++ b/rest_framework/tests/serializer.py @@ -66,6 +66,7 @@ class AlbumsSerializer(serializers.ModelSerializer): class Meta: model = Album + fields = ['title'] # lists are also valid options class BasicTests(TestCase): @@ -282,9 +283,11 @@ class ValidationTests(TestCase): self.assertEquals(serializer.is_valid(), False) self.assertEquals(serializer.errors, {'info': [u'Ensure this value has at most 12 characters (it has 13).']}) + +class ModelValidationTests(TestCase): def test_validate_unique(self): """ - Just check if serializers.ModelSerializer.perform_model_validation() handles unique checks via .full_clean() + Just check if serializers.ModelSerializer handles unique checks via .full_clean() """ serializer = AlbumsSerializer(data={'title': 'a'}) serializer.is_valid() |
