title: DRF - ModelSerializer with a non-model write_only field
body: <p>I have the following Model, Serializer and View. My aim is to pass a custom string like </p>
  
  <pre><code>referrer = "pid=email&amp;af_sub1=ui_1120&amp;c=xyz"
  </code></pre>
  
  <p>in the POST method (RegisterViewSet below) and then to the viewset/serializer to use this information to fill in the referral_campaign, referral_media and inviting_user</p>
  
  <p>So:
  1. referrer is write_only field
  2. referrer is not a field in the model, but the info would be used to populate fields in the model</p>
  
  <p>How to achieve this in the DRF way?</p>
  
  <h3>Model</h3>
  
  <pre><code>class User(AbstractUser):     
      first_name = models.CharField(max_length=100, null=True, blank=True)
      last_name = models.CharField(max_length=100, null=True, blank=True)
  
      # social/viral feature related fields
      referral_campaign = models.CharField(default="", max_length = 200, help_text="Campaign that led to the user signup")
      referral_media_source = models.CharField(default="", max_length = 200, help_text="Campaign that led to the user signup")
      inviting_user = models.ForeignKey('self', help_text="Inviting user", null=True, blank=True)
  </code></pre>
  
  <h3>Serializer</h3>
  
  <pre><code>class UserSerializer(serializers.ModelSerializer):
  
  class Meta:
      model = User
      fields = ('first_name', 'last_name',)
      write_only_fields = ('first_name', 'last_name', 'referrer')     #how to use this 'referrer' field to populate the Model fields?
      read_only_fields = ('id',)
  </code></pre>
  
  <h3>View</h3>
  
  <pre><code>class RegisterViewSet(generics.CreateAPIView):
  
      model = User
      serializer_class = UserSerializer
      permission_classes = [
          permissions.AllowAny
      ]
  </code></pre>