@@ -786,14 +786,13 @@ def __set_field_attrs(self, fields_dict):
786786 specified in ``class Meta``.
787787 """
788788 for field_name , field_obj in iteritems (fields_dict ):
789+ if field_name in self .load_only :
790+ field_obj .load_only = True
791+ if field_name in self .dump_only :
792+ field_obj .dump_only = True
789793 try :
790- if field_name in self .load_only :
791- field_obj .load_only = True
792- if field_name in self .dump_only :
793- field_obj .dump_only = True
794794 field_obj ._add_to_schema (field_name , self )
795- self .on_bind_field (field_name , field_obj )
796- except TypeError :
795+ except TypeError as error :
797796 # field declared as a class, not an instance
798797 if (isinstance (field_obj , type ) and
799798 issubclass (field_obj , base .FieldABC )):
@@ -802,6 +801,8 @@ def __set_field_attrs(self, fields_dict):
802801 'Did you mean "fields.{1}()"?'
803802 .format (field_name , field_obj .__name__ ))
804803 raise TypeError (msg )
804+ raise error
805+ self .on_bind_field (field_name , field_obj )
805806 return fields_dict
806807
807808 def __filter_fields (self , field_names , obj , many = False ):
0 commit comments