                  meth = getattr(self, fname)
                  if inspect.ismethod(meth) and len(inspect.getargspec(meth)[0]) == 2:
                      obj = meth(instance)
              elif hasattr(instance, smart_str(fname)):
                  # finally check for an attribute 'fname' on the instance
                  obj = getattr(instance, fname)
              else:
                  continue
  
 
</s> remove             if fname in instance:
                # finally check for a key 'fname' on the instance
                obj = instance[fname]
            elif hasattr(self, smart_str(fname)):
                # check for a method 'fname' on self first
 </s> add             if hasattr(self, smart_str(fname)):
                # check first for a method 'fname' on self first </s> remove                 # now check for an attribute 'fname' on the instance
 </s> add                 # finally check for an attribute 'fname' on the instance
            elif hasattr(instance, '__contains__') and fname in instance:
                # check for a key 'fname' on the instance
                obj = instance[fname]
                  meth = getattr(self, fname)
                  if inspect.ismethod(meth) and len(inspect.getargspec(meth)[0]) == 2:
                      obj = meth(instance)
            elif hasattr(instance, '__contains__') and fname in instance:
                # check for a key 'fname' on the instance
                obj = instance[fname]
              elif hasattr(instance, smart_str(fname)):
                  # finally check for an attribute 'fname' on the instance
                  obj = getattr(instance, fname)
              else:
                  continue
  
keep keep add keep keep keep keep keep keep
 fixed a bug in serializers 
djangorestframework/serializer.py