title: Python contains and icontains both return case insensitive results
body: <p>I have a very curious case that I'm not sure I understand.  I am filtering data using field__contains but am getting case insensitive results.  As an example:</p>
  
  <p>Entry Data:</p>
  
  <pre><code>{
      "id": 2,
      "last_login": null,
      "is_superuser": false,
      "username": "slappy",
      "first_name": "don",
      "last_name": "sweeney",
      "email": "don@bruins.com",
      "is_staff": false,
      "is_active": true,
      "date_joined": "2019-12-09T09:07:11.897502Z",
      "groups": [],
      "user_permissions": []
  }
  </code></pre>
  
  <p>Search: </p>
  
  <pre><code>query = { 'email__contains' : 'DON' }
  data_set = data_set.filter(Q(**query))
  return data_set
  </code></pre>
  
  <p>The results return the entry despite the casing clearly being wrong.  I checked other filter types and they are working as expected:</p>
  
  <p>Search 2:</p>
  
  <pre><code>query = { 'username__exact' : 'SLAPPY' }
  data_set = data_set.filter(Q(**query))
  return data_set
  </code></pre>
  
  <p>This search produces no results, as would be expected.</p>
  
  <p>Am I missing something here?  Would could be the root cause of this?  I would expect contains to be case sensitive and icontains to be case insensitive, otherwise why would the two exist?</p>