title: Django Rest Framework: `get_serializer_class` called several times, with wrong value of request method
body: <p>Using a <code>ModelViewSet</code>, is it normal for <code>get_serializer_class</code> to be called multiple times for a single request, when accessing the browsable API? And that the value of <code>self.method.request</code> changes between each call?</p>
  
  <p>I've created <a href="https://github.com/decibyte/drf-method-example" rel="noreferrer">a small test project to show the behaviour</a>. In <a href="https://github.com/decibyte/drf-method-example/blob/master/project/example/views.py" rel="noreferrer"><code>project/example/views.py</code></a> there's a <code>ThingViewSet</code> with a custom <code>get_serializer_class</code>, which prints the current request method.</p>
  
  <p>If you start the server and navigate to <a href="http://127.0.0.1:8000/things/1/" rel="noreferrer">http://127.0.0.1:8000/things/1/</a>, the output will be something like:</p>
  
  <pre><code>./manage.py runserver
  Performing system checks...
  
  System check identified no issues (0 silenced).
  May 19, 2015 - 08:51:34
  Django version 1.8.1, using settings 'project.settings'
  Starting development server at http://127.0.0.1:8000/
  Quit the server with CONTROL-C.
  Method is: GET
  Method is: PUT
  Method is: PATCH
  Method is: PUT
  [19/May/2015 08:51:40]"GET /things/1/ HTTP/1.1" 200 11679
  </code></pre>
  
  <p>Clearly, <code>get_serializer_class</code> is called 4 times, with different values (<code>GET</code>, <code>PUT</code>, <code>PATCH</code>, <code>PUT</code>), although only a single <code>GET</code> request is performed.</p>
  
  <p>Strange thing is, that this doesn't happen if you request it as JSON:</p>
  
  <pre><code>./manage.py runserver
  Performing system checks...
  
  System check identified no issues (0 silenced).
  May 19, 2015 - 10:25:57
  Django version 1.8.1, using settings 'project.settings'
  Starting development server at http://127.0.0.1:8000/
  Quit the server with CONTROL-C.
  Method is: GET
  [19/May/2015 10:26:22]"GET /things/?format=json HTTP/1.1" 200 49
  </code></pre>
  
  <p>And the problem is that the request method in the last call to <code>get_serializer_class</code> of the browsable API is <code>PUT</code> (which is obviously wrong for a <code>GET</code> request) and then we end up using the wrong serializer for the request, given that different serializers are returned for different request methods, which we do in our real life project (e.g. for read and write operations).</p>
  
  <p>Can anybody shed some light on what is going on? Why is <code>get_serializer_class</code> called several times for the browsable API, with wrong method values?</p>