  
          if other.sub_type != '*' and other.sub_type != self.sub_type:
              return False
  
          if other.main_type != '*' and other.main_type != self.main_type:
              return False
  
          return True
  
      def precedence(self):
 
</s> remove         if other.sub_type != '*' and other.sub_type != self.sub_type:
 </s> add         if self.sub_type != '*' and other.sub_type != '*'  and other.sub_type != self.sub_type: </s> remove         """Return true if this MediaType satisfies the constraint of the given MediaType."""
        for key in other.params.keys():
            if key != 'q' and other.params[key] != self.params.get(key, None):
 </s> add         """Return true if this MediaType satisfies the given MediaType."""
        for key in self.params.keys():
            if key != 'q' and other.params.get(key, None) != self.params.get(key, None): </s> remove         Return a precedence level for the media type given how specific it is.
 </s> add         Return a precedence level from 0-3 for the media type given how specific it is. </s> remove             return 2
 </s> add             return 1
        if self.main_type != '*' and other.main_type != '*' and other.main_type != self.main_type:
  
          if other.sub_type != '*' and other.sub_type != self.sub_type:
              return False
  
        if self.main_type != '*' and other.main_type != '*' and other.main_type != self.main_type:
              return False
  
          return True
  
      def precedence(self):
keep keep keep keep replace keep keep keep keep keep
 Renderers can now cope with parameterised args.  ResponseMixin gets cleaned up & added Renderer.can_handle_response(), mirroring Parsers.can_handle_request() 
djangorestframework/utils/mediatypes.py