title: Modify Django Rest Framework ModelViewSet behavior
body: <p>I basically have the following model in my project:</p>
  
  <pre><code>class ShellMessage(TimeStampedModel):
      # There is a hidden created and modified field in this model.
      ACTION_TYPE = (
          ('1' , 'Action 1'),
          ('2' , 'Action 2')
      )
      type    = models.CharField(max_length=2,choices=ACTION_TYPE,default='1')
      action  = models.CharField(max_length=100)
      result  = models.CharField(max_length=300, blank=True)
      creator = models.ForeignKey(User)
  </code></pre>
  
  <p>I created a serializer:</p>
  
  <pre><code>class ShellMessageSerializer(serializers.ModelSerializer):
      class Meta:
          model = ShellMessage
          fields = ('action', 'type', 'result', 'creator')
  </code></pre>
  
  <p>And a ModelViewSet:</p>
  
  <pre><code>class ShellListViewSet(viewsets.ModelViewSet):
      serializer_class = ShellMessageSerializer
      queryset = ShellMessage.objects.all()
  </code></pre>
  
  <p>My issue is the following:
  When I create a new ShellMessage with a POST to my API, I don't want to provide the foreignKey of 'creator' but instead just the username of the guy and then process it in my ViewSet to find the user associated with this username and save it in my ShellMessage object.</p>
  
  <p>How can I achieve this using Django rest Framework? I wanted to supercharge create() or pre_save() methods but I'm stuck as all my changes overwrite 'normal' framework behavior and cause unexpected errors.</p>
  
  <p>Thank you.</p>