title: Invalid data. Expected a dictionary, but got str error with serializer field in Django Rest Framework
body: <p>I'm using <code>Django 2.x</code> and <code>Django REST Framework</code>.</p>
  
  <p>I have two models like</p>
  
  <pre><code>class Contact(models.Model):
      id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
      user = models.ForeignKey(User, on_delete=models.PROTECT)
      first_name = models.CharField(max_length=100)
      last_name = models.CharField(max_length=100, blank=True, null=True)
      modified = models.DateTimeField(auto_now=True)
      created = models.DateTimeField(auto_now_add=True)
  
  class AmountGiven(models.Model):
      id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
      contact = models.ForeignKey(Contact, on_delete=models.PROTECT)
      amount = models.FloatField(help_text='Amount given to the contact')
      given_date = models.DateField(default=timezone.now)
      created = models.DateTimeField(auto_now=True)
  </code></pre>
  
  <p>the <strong>serializer.py</strong> the file has serializers defined as</p>
  
  <pre><code>class ContactSerializer(serializers.HyperlinkedModelSerializer):
  
      class Meta:
          model = Contact
          fields = ('id', 'first_name', 'last_name', 'created', 'modified')
  
  class AmountGivenSerializer(serializers.ModelSerializer):
      contact = ContactSerializer()
  
      class Meta:
          model = AmountGiven
          depth = 1
          fields = (
              'id', 'contact', 'amount', 'given_date', 'created'
          )
  </code></pre>
  
  <p><strong>views.py</strong></p>
  
  <pre><code>class AmountGivenViewSet(viewsets.ModelViewSet):
      serializer_class = AmountGivenSerializer
  
      def perform_create(self, serializer):
          save_data = {}
          contact_pk = self.request.data.get('contact', None)
          if not contact_pk:
              raise ValidationError({'contact': ['Contact is required']})
          contact = Contact.objects.filter(
              user=self.request.user,
              pk=contact_pk
          ).first()
          if not contact:
              raise ValidationError({'contact': ['Contact does not exists']})
          save_data['contact'] = contact
          serializer.save(**save_data)
  </code></pre>
  
  <p>But when I add a new record to <strong>AmountGiven</strong> model and passing <code>contact</code> id in <code>contact</code> field </p>
  
  <p><a href="https://i.stack.imgur.com/ccOwd.png" rel="noreferrer"><img src="https://i.stack.imgur.com/ccOwd.png" alt="enter image description here"></a></p>
  
  <p>it is giving error as</p>
  
  <pre><code>{"contact":{"non_field_errors":["Invalid data. Expected a dictionary, but got str."]}}
  </code></pre>
  
  <p>When I remove <code>contact = ContactSerializer()</code> from <strong>AmountGivenSerializer</strong>, it works fine as expected but then in response as <code>depth</code> is set to 1, the contact data contains only model fields and not other property fields defined.</p>