diff options
| author | Marko Tibold | 2012-11-27 23:49:27 +0100 |
|---|---|---|
| committer | Marko Tibold | 2012-11-27 23:49:27 +0100 |
| commit | 899f96ae9186e68009dba5d54246232d34457354 (patch) | |
| tree | f1bcc31924d13e58a4039296a26ee874b6f16e74 /rest_framework | |
| parent | f104f7434052bedf6dd970806ff54b73489b339b (diff) | |
| download | django-rest-framework-899f96ae9186e68009dba5d54246232d34457354.tar.bz2 | |
Added a get_excluded_fieldnames() method.
Model validation now excludes fields not listed in Meta fields (if set).
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/serializers.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 5046c7b1..775a8a1e 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -119,6 +119,17 @@ class BaseSerializer(Field): """ return {} + def get_excluded_fieldnames(self): + """ + Returns the fieldnames that should not be validated. + """ + excluded_fields = list(self.opts.exclude) + for field in self.fields.keys() + self.default_fields.keys(): + if self.opts.fields: + if field not in self.opts.fields + self.opts.exclude: + excluded_fields.append(field) + return excluded_fields + def get_fields(self): """ Returns the complete set of fields for the object as a dict. @@ -466,7 +477,7 @@ class ModelSerializer(Serializer): def perform_model_validation(self, restored_object): # Call Django's full_clean() which in turn calls: Model.clean_fields(), Model.clean(), Model.validat_unique() - restored_object.full_clean(exclude=list(self.opts.exclude)) + restored_object.full_clean(exclude=list(self.get_excluded_fieldnames())) def restore_object(self, attrs, instance=None): """ |
