title: KeyError 'id' when trying to access request.data in ViewSet create definition
body: <p>I recently upgraded from drf 2.4 to v3 and have been trying to override the <code>def Create</code> in one of my ViewSets. However when trying to access the request.data that i've saved to a serializer variable i'll receive an error: <code>KeyError at /api/appointments/
  'id'</code></p>
  
  <p>I'm including my ViewSet code, serializer, and the traceback from the error below:</p>
  
  <pre><code>class AppointmentViewSet(viewsets.ModelViewSet):
      queryset = Appointment.objects.all()
      serializer_class = AppointmentSerializer
      permission_classes = (permissions.IsAuthenticatedOrReadOnly,
                        IsOwnerOrReadOnly,)
      def create(self, request):
              serializer = AppointmentSerializer(data=request.data)
              if serializer.is_valid(raise_exception=True):
              #get the datetime object from the request data and filter availability objects, datetime stored in attribute .when
                      avQueryset = Availability.objects.filter(date__range=(serializer.data.when, serializer.data.when))
      def pre_save(self, obj):
              obj.service_recipient = self.request.user
  </code></pre>
  
  <p>Serializer</p>
  
  <pre><code>class AppointmentSerializer(serializers.ModelSerializer):
          class Meta:
                  model = Appointment
                  fields = ('id','availability' , 'business_location', 'services', 'when', 'service_recipient', 'completed')
  </code></pre>
  
  <p><code>repr(serializer)</code></p>
  
  <pre><code>AppointmentSerializer():
      id = IntegerField(label='ID', read_only=True)
      availability = PrimaryKeyRelatedField(queryset=Availability.objects.all())
      business_location = PrimaryKeyRelatedField(queryset=BusinessLocation.objects.all())
      services = PrimaryKeyRelatedField(many=True, queryset=Service.objects.all())
      when = DateTimeField(allow_null=True, required=False)
      service_recipient = PrimaryKeyRelatedField(queryset=User.objects.all())
      completed = BooleanField(help_text='Set to true when appointment has been completed.', required=False)
  </code></pre>
  
  <p>Traceback</p>
  
  <pre><code>Environment:
  
  
  Request Method: POST
  Request URL: http://104.131.110.138/api/appointments/
  
  Django Version: 1.7.1
  Python Version: 2.7.6
  Installed Applications:
  ('django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'webapp',
   'rest_framework')
  Installed Middleware:
  ('django.contrib.sessions.middleware.SessionMiddleware',
   'django.middleware.common.CommonMiddleware',
   'django.middleware.csrf.CsrfViewMiddleware',
   'django.contrib.auth.middleware.AuthenticationMiddleware',
   'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
   'django.contrib.messages.middleware.MessageMiddleware',
   'django.middleware.clickjacking.XFrameOptionsMiddleware')
  
  
  Traceback:
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
    111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/csrf.py" in wrapped_view
    57.         return view_func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/rest_framework/viewsets.py" in view
    85.             return self.dispatch(request, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py" in dispatch
    407.             response = self.handle_exception(exc)
  File "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py" in dispatch
    404.             response = handler(request, *args, **kwargs)
  File "/home/appointments/appointments/webapp/views.py" in create
    57.                   avQueryset = Availability.objects.filter(date__range=(serializer.data.when, serializer.data.when))
  File "/usr/local/lib/python2.7/dist-packages/rest_framework/serializers.py" in data
    422.         ret = super(Serializer, self).data
  File "/usr/local/lib/python2.7/dist-packages/rest_framework/serializers.py" in data
    179.                 self._data = self.to_representation(self.validated_data)
  File "/usr/local/lib/python2.7/dist-packages/rest_framework/serializers.py" in to_representation
    387.             attribute = field.get_attribute(instance)
  File "/usr/local/lib/python2.7/dist-packages/rest_framework/fields.py" in get_attribute
    277.         return get_attribute(instance, self.source_attrs)
  File "/usr/local/lib/python2.7/dist-packages/rest_framework/fields.py" in get_attribute
    65.                 instance = instance[attr]
  
  Exception Type: KeyError at /api/appointments/
  Exception Value: 'id'
  </code></pre>