title: Django DRF - What's the use of serializers?
body: <p>I've been using Django for over 3 years now, but have never felt the need to use DRF. However, seeing the growing popularity of DRF, I thought of giving it a try.</p>
  
  <p><strong>Serializing</strong> is the concept I find it most difficult. Consider for eg:- I want to save user details. Following is the user related models.</p>
  
  <pre><code>class Users(models.Model):
      GENDER_CHOICES = (
          ('M', 'MALE'),
          ('F', 'FEMALE'),
          ('O', 'OTHERS'),
      )
      first_name = models.CharField(max_length=255, blank=True, null=True)
      middle_name = models.CharField(max_length=255, blank=True, null=True)
      last_name = models.CharField(max_length=255, blank=True, null=True)
      gender = models.CharField(choices=GENDER_CHOICES, max_length=1, blank=True,
                                null=True)
  
  
  class UserAddress(models.Model):
      ADDRESS_TYPE_CHOICES = (
          ('P', 'Permanent'),
          ('Cu', 'Current'),
          ('Co', 'Correspondence')
      )
      line1 = models.CharField(max_length=255)
      line2 = models.CharField(max_length=255, blank=True, null=True)
      pincode = models.IntegerField()
      address_type = models.CharField(choices=ADDRESS_TYPE_CHOICES,
                                      max_length=255)
      user_id = models.ForeignKey(Users, related_name='uaddress')
  
  
  class UserPhone(models.Model):
      phone = models.CharField(max_length=10)
      user_id = models.ForeignKey(Users, related_name='uphone')
  
  
  class UserPastProfession(models.Model):
      profession = models.CharField(max_length=10)  # BusinessMan, software Engineer, Artist etc.
      user_id = models.ForeignKey(Users, related_name='uprofession')
  </code></pre>
  
  <p>I'm getting all the user details bundled in one POST endpoint.</p>
  
  <pre><code>{
      'first_name': 'first_name',
      'middle_name': 'middle_name',
      'last_name': 'last_name',
      'gender': 'gender',
      'address': [{
          'line1': 'line1',
          'line2': 'line2',
          'address_type': 'address_type',
      }],
      'phone': ['phone1', 'phone2'],
      'profession': ['BusinessMan', 'Software Engineer', 'Artist']
  }
  </code></pre>
  
  <p>Without using DRF, I would have made a <code>Users</code> object first, linking it with <code>UserAddress</code>, <code>UserPhone</code> and <code>UserPastProfession</code> object.</p>
  
  <p>How the same could be done using DRF? I mean <code>validating</code>, <code>serializing</code>, and then saving the details. How serializers.py file will be look like?</p>